<template>
  <div class="pr-dashboard" @scroll="handleScroll">
    <div class="pr-dashboard-export flexbox flexcenter flexbetween">
      <span class="font_weight_500 font_18">绩效看板</span>
      <div class="flexbox">
        <el-dropdown :hide-on-click="false" trigger="click" placement='bottom'>
            <div class="flexbox flexcenter drop_box drop_hover">
                <span class="drop_text">绩效表格模块</span>
                <span class="drop_title" v-if="editor_table.length>0">
                    <span v-for="item in editor_table">{{ tableModules[item-1].nickname }} </span>
                </span>
                <span class="drop_title" v-else>全部</span>
                <span class="el-icon-caret-bottom"></span>
            </div>
            <el-dropdown-menu slot="dropdown">
                <el-input v-model="centreQuery" clearable placeholder="请输入内容" prefix-icon="el-icon-search" style="width:180px" size="small" class="dropdown_input"></el-input>
                <div class="dropdown_hascheck flexbox flexcenter">
                    <span class="hascheck_num" :class="{'hascheck_num_color':editor_table.length>0}">已选 {{editor_table.length}} 项</span>
                    <div class="rank_line" style="margin:0 10px"></div>
                    <el-link type="primary" :underline="false" @click="clearQuery" >清除已选</el-link>
                </div>
                <el-checkbox-group v-model="editor_table" class="check_style" @change="getList">
                    <el-checkbox :label="item.id" v-for="item in filteredData(centreQuery,tableModules,'nickname')" :key='item.id'>
                        <span class="el_check_title">{{item.nickname}}</span>
                        <span class="el-icon-check el_check_icon"></span>
                    </el-checkbox>
                </el-checkbox-group>
            </el-dropdown-menu>
        </el-dropdown>
        <div class="flexbox flexcenter" style="cursor: pointer;" @click="updata" v-has-permission>
            <el-tooltip content="同步上月数据" placement="top">
                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="25" viewBox="0 0 24 25" fill="none">
                    <path d="M18.5999 10.1H5.3999L10.1999 5.30005" stroke="#616C85" stroke-width="1.92" stroke-linecap="round" stroke-linejoin="round"/>
                    <path d="M5.4001 14.3001H18.6001L13.8001 19.1001" stroke="#616C85" stroke-width="1.92" stroke-linecap="round" stroke-linejoin="round"/>
                </svg>        
             </el-tooltip>
        </div>
        <div class="flexbox flexcenter" style="margin: 0 12px 0 4px;cursor: pointer;" @click="dialogExportVisible = true,getExportList()" v-has-permission>
        <el-tooltip content="导出任务" placement="top">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="25" viewBox="0 0 24 25" fill="none">
                <path d="M5 7C5 6.44772 5.44772 6 6 6H18C18.5523 6 19 6.44772 19 7V20.5C19 21.0523 18.5523 21.5 18 21.5H6C5.44772 21.5 5 21.0523 5 20.5V7Z" stroke="#616C85" stroke-width="2" stroke-linecap="round"/>
                <path d="M8 5C8 4.44772 8.44772 4 9 4L15 4C15.5523 4 16 4.44772 16 5V7C16 7.55228 15.5523 8 15 8H9C8.44772 8 8 7.55228 8 7V5Z" fill="white" stroke="#616C85" stroke-width="2" stroke-linecap="round"/>
                <path d="M12 11.5V17.5M12 17.5L9.5 15.5M12 17.5L14.5 15.5" stroke="#616C85" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
            </svg>         
        </el-tooltip>
        </div>
        <el-date-picker
          v-model="Dateval"
          size="small"
           type="month"
           format="yyyy 年 MM 月"
           value-format="yyyy-MM-dd"
           :clearable="false"
          @change="changeDate"
          placeholder="选择日期"
        >
        </el-date-picker>
          <el-upload
          v-has-permission
            ref="upload"
            class="upload-demo"
            action
            accept=".xlsx,.xls"
            :show-file-list="false"
            :on-exceed="handleExceed"
            :auto-upload="false"
            :on-change="handle"
  >
    <template #trigger>
     <el-button size="small" type="primary" plain class="import-btn">
            <i class="el-icon--left">
            <svg xmlns="http://www.w3.org/2000/svg" width="14" height="15" viewBox="0 0 14 15" fill="none">
                <path d="M6.62958 1.87742C6.62918 1.87782 6.62878 1.87822 6.62838 1.87862L3.12838 5.37862C2.92335 5.58365 2.92335 5.91606 3.12838 6.12108C3.3334 6.32611 3.66582 6.32611 3.87084 6.12108L6.47461 3.51732V10.1249C6.47461 10.4148 6.70966 10.6499 6.99961 10.6499C7.28956 10.6499 7.52461 10.4148 7.52461 10.1249V3.51732L10.1284 6.12108C10.3334 6.32611 10.6658 6.32611 10.8708 6.12108C11.0759 5.91606 11.0759 5.58365 10.8708 5.37862L7.37084 1.87862C7.32051 1.82829 7.26249 1.79031 7.20057 1.76469" fill="#165DFF"/>
                <path d="M6.62958 1.87742C6.67735 1.82996 6.73197 1.79357 6.79025 1.76825L6.62958 1.87742Z" fill="#165DFF"/>
                <path d="M6.79025 1.76825C6.79304 1.76704 6.79584 1.76585 6.79865 1.76469C6.86055 1.73902 6.92843 1.72485 6.99961 1.72485C7.07047 1.72485 7.13805 1.73889 7.19972 1.76434" fill="#165DFF"/>
                <path d="M2.27461 8.37485C2.27461 8.0849 2.03956 7.84985 1.74961 7.84985C1.45966 7.84985 1.22461 8.0849 1.22461 8.37485C1.22461 9.30536 1.55209 10.5305 2.45363 11.5293C3.36871 12.5432 4.83072 13.2749 6.99961 13.2749C9.1685 13.2749 10.6305 12.5432 11.5456 11.5293C12.4471 10.5305 12.7746 9.30536 12.7746 8.37485C12.7746 8.0849 12.5396 7.84985 12.2496 7.84985C11.9597 7.84985 11.7246 8.0849 11.7246 8.37485C11.7246 9.08497 11.4688 10.0474 10.7661 10.8258C10.077 11.5893 8.91405 12.2249 6.99961 12.2249C5.08517 12.2249 3.92217 11.5893 3.23309 10.8258C2.53047 10.0474 2.27461 9.08497 2.27461 8.37485Z" fill="#165DFF"/>
            </svg>
            </i>导入数据</el-button
        >
    </template>
  </el-upload>
  <el-dropdown @command="(e)=>this[e]()">
            <el-button size="small" type="primary"  :loading="exportLoading" v-has-permission class="export_btn" style="display: flex;">
                导出数据
                <svg xmlns="http://www.w3.org/2000/svg" width="14" height="15" viewBox="0 0 14 15" fill="none">
                <path d="M10.4689 6.52368L7.58966 9.39577C7.28086 9.70381 6.78001 9.70055 6.47525 9.38851L3.67676 6.52319" stroke="white" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
                </svg>
            </el-button>
            <el-dropdown-menu slot="dropdown">
                <el-dropdown-item command="exportxsls">导出全部</el-dropdown-item>
                <el-dropdown-item command="exportxsl">导出汇总</el-dropdown-item>
            </el-dropdown-menu>
  </el-dropdown>
      </div>
    </div>
    <div  style="height:80vh" v-loading="loading" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0)" >
        <div class="personnel-box"  v-if="AllList.length > 0"  :style="{ height: containerHeight + 'px' }">
        <div class="personnel-list" v-for="(item,index) in AllList" :key="index" :id="'item-' + item.user_id" :class="`${index}xxxxxxx`" :style="{ top: item.top + index * 14 + 'px', height: domHeight + 'px' }">
            <div class="personnel-header flexbox flexbetween pl_20 pr_20 " >
            <div class="flexbox flexcenter font_weight_500"><span class="personnel-surname flexbox flexcenter flexjust" :style="{background:item.nameBg}">{{item.name.substring(0,1)}}</span><span>{{ item.name }}</span></div>
            <div class="flexbox">
                <div class="header-score flexbox flexcenter flexjust">
                    <span> 
                        <div class="flexbox flexcenter">
                        <el-tooltip  placement="top">
                            <div slot="content">自评合计 =（加减分项）考核得分合计 + （重点工作）自评考权重得分合计 +（关键绩效指标）考核权重得分合计</div>
                            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
                                <path d="M16.0418 9.99992C16.0418 13.3366 13.3369 16.0416 10.0002 16.0416C6.66344 16.0416 3.9585 13.3366 3.9585 9.99992C3.9585 6.6632 6.66344 3.95825 10.0002 3.95825C13.3369 3.95825 16.0418 6.6632 16.0418 9.99992Z" fill="#ACB2BB" stroke="#ACB2BB" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                <path d="M8.125 8.33325C8.125 8.33325 8.33333 6.45825 10 6.45825C11.6667 6.45825 11.875 7.49992 11.875 8.33325C11.875 8.95937 11.5222 9.5855 10.8165 9.85816C10.3872 10.024 10 10.373 10 10.8333V11.0416" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                <path d="M10.4168 13.3334C10.4168 13.5635 10.2303 13.7501 10.0002 13.7501C9.77004 13.7501 9.5835 13.5635 9.5835 13.3334C9.5835 13.1033 9.77004 12.9167 10.0002 12.9167C10.2303 12.9167 10.4168 13.1033 10.4168 13.3334Z" stroke="white" stroke-width="0.833333" stroke-linecap="round" stroke-linejoin="round"/>
                            </svg>
                        </el-tooltip>
                        自评合计
                        </div>
                    </span>
                    <span>{{ item.self_sum }}</span></div>
                <div class="header-score flexbox flexcenter flexjust">
                    <span>
                    <div class="flexbox flexcenter">
                        <el-tooltip  placement="top">
                            <div slot="content">上级评分合计=（加减分项）考核得分合计 + （重点工作）上级权重评分合计 +（关键绩效指标）考核权重得分合计</div>
                            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
                                <path d="M16.0418 9.99992C16.0418 13.3366 13.3369 16.0416 10.0002 16.0416C6.66344 16.0416 3.9585 13.3366 3.9585 9.99992C3.9585 6.6632 6.66344 3.95825 10.0002 3.95825C13.3369 3.95825 16.0418 6.6632 16.0418 9.99992Z" fill="#ACB2BB" stroke="#ACB2BB" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                <path d="M8.125 8.33325C8.125 8.33325 8.33333 6.45825 10 6.45825C11.6667 6.45825 11.875 7.49992 11.875 8.33325C11.875 8.95937 11.5222 9.5855 10.8165 9.85816C10.3872 10.024 10 10.373 10 10.8333V11.0416" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                <path d="M10.4168 13.3334C10.4168 13.5635 10.2303 13.7501 10.0002 13.7501C9.77004 13.7501 9.5835 13.5635 9.5835 13.3334C9.5835 13.1033 9.77004 12.9167 10.0002 12.9167C10.2303 12.9167 10.4168 13.1033 10.4168 13.3334Z" stroke="white" stroke-width="0.833333" stroke-linecap="round" stroke-linejoin="round"/>
                            </svg>
                        </el-tooltip>
                        上级评分合计
                        </div>
                    </span>
                    <span>{{ item.superior_sum }}</span>
                </div>
                <div class="header-score flexbox flexcenter flexjust">
                    <span>
                    <div class="flexbox flexcenter">
                        <el-tooltip  placement="top">
                            <div slot="content">部门负责人评分合计 =（加减分项）考核得分合计 + （重点工作）部门负责人权重评分合计 +（关键绩效指标）考核权重得分合计</div>
                            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
                                <path d="M16.0418 9.99992C16.0418 13.3366 13.3369 16.0416 10.0002 16.0416C6.66344 16.0416 3.9585 13.3366 3.9585 9.99992C3.9585 6.6632 6.66344 3.95825 10.0002 3.95825C13.3369 3.95825 16.0418 6.6632 16.0418 9.99992Z" fill="#ACB2BB" stroke="#ACB2BB" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                <path d="M8.125 8.33325C8.125 8.33325 8.33333 6.45825 10 6.45825C11.6667 6.45825 11.875 7.49992 11.875 8.33325C11.875 8.95937 11.5222 9.5855 10.8165 9.85816C10.3872 10.024 10 10.373 10 10.8333V11.0416" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                <path d="M10.4168 13.3334C10.4168 13.5635 10.2303 13.7501 10.0002 13.7501C9.77004 13.7501 9.5835 13.5635 9.5835 13.3334C9.5835 13.1033 9.77004 12.9167 10.0002 12.9167C10.2303 12.9167 10.4168 13.1033 10.4168 13.3334Z" stroke="white" stroke-width="0.833333" stroke-linecap="round" stroke-linejoin="round"/>
                            </svg>
                        </el-tooltip>
                        部门负责人评分合计
                        </div>
                    </span>
                    <span>{{ item.department_sum }}</span>
                </div>
                <div class="header-score flexbox flexcenter flexjust">
                    <span>
                    <div class="flexbox flexcenter">
                        <el-tooltip  placement="top">
                            <div slot="content">总经办评分合计 =（加减分项）考核得分合计 + （重点工作）总经办权重评分合计 +（关键绩效指标）考核权重得分合计 </div>
                            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
                                <path d="M16.0418 9.99992C16.0418 13.3366 13.3369 16.0416 10.0002 16.0416C6.66344 16.0416 3.9585 13.3366 3.9585 9.99992C3.9585 6.6632 6.66344 3.95825 10.0002 3.95825C13.3369 3.95825 16.0418 6.6632 16.0418 9.99992Z" fill="#ACB2BB" stroke="#ACB2BB" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                <path d="M8.125 8.33325C8.125 8.33325 8.33333 6.45825 10 6.45825C11.6667 6.45825 11.875 7.49992 11.875 8.33325C11.875 8.95937 11.5222 9.5855 10.8165 9.85816C10.3872 10.024 10 10.373 10 10.8333V11.0416" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                <path d="M10.4168 13.3334C10.4168 13.5635 10.2303 13.7501 10.0002 13.7501C9.77004 13.7501 9.5835 13.5635 9.5835 13.3334C9.5835 13.1033 9.77004 12.9167 10.0002 12.9167C10.2303 12.9167 10.4168 13.1033 10.4168 13.3334Z" stroke="white" stroke-width="0.833333" stroke-linecap="round" stroke-linejoin="round"/>
                            </svg>
                        </el-tooltip>
                        总经办评分合计
                        </div>
                    </span>
                    <span>{{ item.general_sum }}</span>
                </div>
            </div>
            </div>
            <div class="personnel-table w_bg">
            <div class="table-heade" v-if="is_editor_table(1)">
                <div class="table-title flexbox flexcenter flexbetween">
                    <div class="module-title font_weight_500">关键绩效指标</div>
                    <div class="flexbox flexcenter">
                        <div class="flexbox flexcenter">
                            <div class="font_14" style="margin-right:4px">记分规则</div>
                            <el-tooltip  placement="top">
                                <div slot="content">1.线性计分，最高得150分。<br/>2.该项标准分为100分。</div>
                                <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
                                    <path d="M16.0418 9.99992C16.0418 13.3366 13.3369 16.0416 10.0002 16.0416C6.66344 16.0416 3.9585 13.3366 3.9585 9.99992C3.9585 6.6632 6.66344 3.95825 10.0002 3.95825C13.3369 3.95825 16.0418 6.6632 16.0418 9.99992Z" fill="#ACB2BB" stroke="#ACB2BB" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                    <path d="M8.125 8.33325C8.125 8.33325 8.33333 6.45825 10 6.45825C11.6667 6.45825 11.875 7.49992 11.875 8.33325C11.875 8.95937 11.5222 9.5855 10.8165 9.85816C10.3872 10.024 10 10.373 10 10.8333V11.0416" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                    <path d="M10.4168 13.3334C10.4168 13.5635 10.2303 13.7501 10.0002 13.7501C9.77004 13.7501 9.5835 13.5635 9.5835 13.3334C9.5835 13.1033 9.77004 12.9167 10.0002 12.9167C10.2303 12.9167 10.4168 13.1033 10.4168 13.3334Z" stroke="white" stroke-width="0.833333" stroke-linecap="round" stroke-linejoin="round"/>
                                </svg>
                            </el-tooltip>
                        </div>
                        <el-button v-has-permission size="small"  @click="addList(item.user_id,1,item.department_id)">
                            <i class="el-icon--left">
                                    <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
                                    <path d="M10.833 4.79159C10.833 4.33135 10.4599 3.95825 9.99967 3.95825C9.53944 3.95825 9.16634 4.33135 9.16634 4.79159V9.16658H4.79134C4.3311 9.16658 3.95801 9.53968 3.95801 9.99992C3.95801 10.4602 4.3311 10.8333 4.79134 10.8333H9.16634V15.2083C9.16634 15.6685 9.53944 16.0416 9.99967 16.0416C10.4599 16.0416 10.833 15.6685 10.833 15.2083V10.8333H15.208C15.6682 10.8333 16.0413 10.4602 16.0413 9.99992C16.0413 9.53968 15.6682 9.16658 15.208 9.16658H10.833V4.79159Z" fill="#5C636C"/>
                                    </svg>
                                </i>
                            新增数据</el-button>
                    </div>
                </div>
                <div class="operate-box flexbox flexcenter flexbetween font_14" v-if="checkboxEnable.user_id.includes(item.user_id+''+typesData(item.data,1).types)">
                    <div class="flexbox">
                        <div class="operate-selecte">已选 <span style="color:#165DFF;"> {{ checkBoxLength(`multipleTable${typesData(item.data,1).data[0].id}`) }}</span> 项</div>
                        <div class="operate-del" @click="dialogVisible = true,multipleTable_box = `multipleTable${typesData(item.data,1).data[0].id}`">删除</div>
                        <div class="operate-up" @click="dialogListVisible = true,getDepartmentList(),multipleTable_box = `multipleTable${typesData(item.data,1).data[0].id}`">同步信息</div>
                    </div>
                    <div style="cursor: pointer;" @click="closeoperate(`multipleTable${typesData(item.data,1).data[0].id}`)">
                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                            <path d="M17.254 8.25426C17.6706 7.8377 17.6706 7.16233 17.254 6.74577C16.8375 6.32921 16.1621 6.32921 15.7455 6.74577L11.9998 10.4915L8.25402 6.74577C7.83746 6.32921 7.16208 6.32921 6.74552 6.74577C6.32897 7.16233 6.32897 7.8377 6.74552 8.25426L10.4913 12L6.74552 15.7458C6.32897 16.1623 6.32897 16.8377 6.74552 17.2543C7.16208 17.6708 7.83746 17.6708 8.25402 17.2543L11.9998 13.5085L15.7455 17.2543C16.1621 17.6708 16.8375 17.6708 17.254 17.2543C17.6706 16.8377 17.6706 16.1623 17.254 15.7458L13.5083 12L17.254 8.25426Z" fill="#ACB2BB"/>
                        </svg>
                    </div>
                </div>
                <div>
                    <!-- table:types1 -->
                    <el-table v-if="typesData(item.data,1).length == 0" :data="[]">
                        <el-table-column :label="item.label"  v-for="item in tableColumn"></el-table-column>
                        <div slot="empty"> 
                        <div class="flexbox flexcenter flexcolumn flexjust" style="height:250px">
                            <img src="../../../assets/img/tabnull.svg" alt="">
                            <div class="font_13 color_03">暂无数据,请先添加</div>
                        </div>
                        </div>
                    </el-table>
                    <el-table
                        v-else
                        class="el-table--enable-row-hover"
                        :ref="`multipleTable${typesData(item.data,1).data[0].id}`"
                        @selection-change="selectcheckbox(typesData(item.data,1).data[0],`multipleTable${typesData(item.data,1).data[0].id}`)"
                        @select-all="selectAll(`multipleTable${typesData(item.data,1).data[0].id}`,0)"
                        :data="typesData(item.data,1).data"
                        :cell-class-name="tableCellClassName_partA"
                        @cell-click="selectcell_partA"
                        tooltip-effect="light"
                        style="width: 100%"
                    >
                        <el-table-column type="selection" width="50" v-if="IsAdmin"></el-table-column>
                        <el-table-column :label="columnItem.label" :width="columnItem.width"  v-for="columnItem in tableColumn">
                            <template slot="header">
                               <div class="flexbox flexcenter">
                                {{columnItem.label}}
                                <div class="flexbox flexcenter" v-if="columnItem.labelTips">
                                <el-tooltip  placement="top">
                                    <div slot="content">{{columnItem.labelTips}}</div>
                                    <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
                                        <path d="M16.0418 9.99992C16.0418 13.3366 13.3369 16.0416 10.0002 16.0416C6.66344 16.0416 3.9585 13.3366 3.9585 9.99992C3.9585 6.6632 6.66344 3.95825 10.0002 3.95825C13.3369 3.95825 16.0418 6.6632 16.0418 9.99992Z" fill="#ACB2BB" stroke="#ACB2BB" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                        <path d="M8.125 8.33325C8.125 8.33325 8.33333 6.45825 10 6.45825C11.6667 6.45825 11.875 7.49992 11.875 8.33325C11.875 8.95937 11.5222 9.5855 10.8165 9.85816C10.3872 10.024 10 10.373 10 10.8333V11.0416" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                        <path d="M10.4168 13.3334C10.4168 13.5635 10.2303 13.7501 10.0002 13.7501C9.77004 13.7501 9.5835 13.5635 9.5835 13.3334C9.5835 13.1033 9.77004 12.9167 10.0002 12.9167C10.2303 12.9167 10.4168 13.1033 10.4168 13.3334Z" stroke="white" stroke-width="0.833333" stroke-linecap="round" stroke-linejoin="round"/>
                                    </svg>
                                </el-tooltip>
                                </div>
                               </div>
                            </template>
                            <template slot-scope="scope">
                                <template v-if="columnItem.type == 'custom' && columnItem.content == 'index'">
                                <div class="flexbox flexcenter" @click="dialogForm(scope.row)">
                                    <div class="flexbox flexcenter">
                                        <el-tooltip :content="scope.row.formula" placement="top">
                                            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none" style="margin-right:4px">
                                                <path d="M16.0418 9.99992C16.0418 13.3366 13.3369 16.0416 10.0002 16.0416C6.66344 16.0416 3.9585 13.3366 3.9585 9.99992C3.9585 6.6632 6.66344 3.95825 10.0002 3.95825C13.3369 3.95825 16.0418 6.6632 16.0418 9.99992Z" fill="#ACB2BB" stroke="#ACB2BB" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                                <path d="M8.125 8.33325C8.125 8.33325 8.33333 6.45825 10 6.45825C11.6667 6.45825 11.875 7.49992 11.875 8.33325C11.875 8.95937 11.5222 9.5855 10.8165 9.85816C10.3872 10.024 10 10.373 10 10.8333V11.0416" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                                <path d="M10.4168 13.3334C10.4168 13.5635 10.2303 13.7501 10.0002 13.7501C9.77004 13.7501 9.5835 13.5635 9.5835 13.3334C9.5835 13.1033 9.77004 12.9167 10.0002 12.9167C10.2303 12.9167 10.4168 13.1033 10.4168 13.3334Z" stroke="white" stroke-width="0.833333" stroke-linecap="round" stroke-linejoin="round"/>
                                            </svg>
                                        </el-tooltip>
                                    </div>
                                    <div v-if="scope.row[columnItem.content]" class="tooltip_show">
                                        <el-tooltip :content="scope.row[columnItem.content]" placement="top-end" >
                                                <div class="overflow-hidden">{{ scope.row[columnItem.content]}}</div>
                                        </el-tooltip>
                                        <!-- {{ scope.row[columnItem.content]}} -->
                                    </div>
                                    <div v-else style="color:#ACB2BB">请输入...</div>
                                </div>
                                </template>
                                <template v-if="columnItem.type == 'textarea'">
                                    <div v-if="flag_1 && scope.row.id == partA_id && scope.row.rowindex == rowIndex && scope.column.columnindex == columnIndex">
                                    <el-input
                                        v-textarea
                                        @blur="blursave(columnItem.content,$event.target.value,scope.row)"
                                        type="textarea"
                                        :autosize="{ minRows: 1, maxRows: 3 }"
                                        :rows="2"
                                        placeholder="请输入内容"
                                        v-model="scope.row[columnItem.content]"
                                        :required="columnItem.rule"
                                        oninput="if(this.required)value=value.replace(/[^\d.]/g, '')"
                                        onKeyPress="if(this.required && event.keyCode!=46 && event.keyCode!=45 && (event.keyCode<48 || event.keyCode>57)) event.returnValue=false"
                                        >
                                        </el-input>
                                    </div>
                                    <div v-else>
                                        <div v-if="scope.row[columnItem.content]" class="tooltip_show">
                                             <el-tooltip  :content="scope.row[columnItem.content]" placement="top-end">
                                                    <div class="overflow-hidden">{{ scope.row[columnItem.content]}}</div>
                                            </el-tooltip>
                                        </div>
                                        <div v-else style="color:#ACB2BB">请输入...</div>
                                    </div>
                                </template>
                                <template v-if="columnItem.type == 'input'">
                                    <div v-if="flag_1 && scope.row.id == partA_id && scope.row.rowindex == rowIndex && scope.column.columnindex == columnIndex">
                                        <el-input
                                            v-focus
                                            size="small"
                                            @blur="blursave(columnItem.content,$event.target.value,scope.row)"
                                            placeholder="请输入内容"
                                            v-model="scope.row[columnItem.content]"
                                            :required="columnItem.rule"
                                            onkeyup="if(this.required)this.value=this.value.replace(/[^\d.]/g, '')"
                                            onKeyPress="if(this.required && event.keyCode!=46 && event.keyCode!=45 && (event.keyCode<48 || event.keyCode>57)) event.returnValue=false"
                                            >
                                            <template slot="append">%</template>
                                            </el-input>
                                        </div>
                                        <div v-else>
                                            <div v-if="scope.row[columnItem.content]">
                                                {{ scope.row[columnItem.content] }} %
                                            </div>
                                            <div v-else style="color:#ACB2BB">请输入...</div>
                                    </div>
                                </template>
                                <template v-if="columnItem.type == 'text'">
                                    <div class="score-style">
                                    {{ scope.row[columnItem.content] || '0.00'}}
                                    </div>
                                </template>
                            </template>
                        </el-table-column>
                    </el-table>
                </div>
                <div class="subtotal flexbox flexcenter">
                    <div>小计：</div>
                    <div class="flexbox">
                        <div class="flexbox flexcenter " style="margin-right: 20px" v-has-permission >
                            <span :style="{color:weightSum(item.data)<0 ?'red':'#616C85'}">剩余可输入单项权重 </span><span style="color:#EBEBEB;padding:0 8px;">|</span><span class="font_weight_500" :style="{color:weightSum(item.data)<0 ?'red':'#191B1E'}">{{ weightSum(item.data) }}%</span>
                        </div>
                        <div class="flexbox flexcenter " >
                            <span style="color:#616C85">实际达成值 </span><span style="color:#EBEBEB;padding:0 8px;">|</span><span class="font_weight_500" style="color:#191B1E">{{ typesData(item.data,1).arrive_sum }}</span>
                        </div>
                        <div class="flexbox flexcenter pl_20 " >
                            <span style="color:#616C85">考核得分 </span><span style="color:#EBEBEB;padding:0 8px;">|</span><span class="font_weight_500" style="color:#191B1E">{{ typesData(item.data,1).arrive_score_sum }}</span>
                        </div>
                        <div class="flexbox flexcenter pl_20 " >
                            <span style="color:#616C85">考核权重得分 </span><span style="color:#EBEBEB;padding:0 8px;">|</span><span class="font_weight_500" style="color:#191B1E">{{ typesData(item.data,1).arrive_weiht_sum }}</span>
                        </div>
                    </div>
                </div>
            </div>
            <div class="table-heade" v-if="is_editor_table(2)">
                <div class="table-title flexbox flexcenter flexbetween">
                    <div class="module-title font_weight_500">重点工作</div>
                    <div class="flexbox flexcenter">
                        <div class="flexbox flexcenter">
                            <div class="font_14" style="margin-right:4px">记分规则</div>
                            <el-tooltip  placement="top">
                                <div slot="content">
                                    <p>按里程节点进行登记评分。</p>
                                    <p>1.优秀（按时完成并且完成结果超出预期）,得分=95~100</p>
                                    <p>2.良好（按时完成并且完成结果基本达到预期）,得分=80~95</p>
                                    <p>3.合格（按时完成,但部分结果未达到预期）,得分=60~80</p>
                                    <p>4.不合格（未实施或未按时完成，且结果与预期相差甚远）,得分=0~60</p>
                                </div>
                                <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
                                    <path d="M16.0418 9.99992C16.0418 13.3366 13.3369 16.0416 10.0002 16.0416C6.66344 16.0416 3.9585 13.3366 3.9585 9.99992C3.9585 6.6632 6.66344 3.95825 10.0002 3.95825C13.3369 3.95825 16.0418 6.6632 16.0418 9.99992Z" fill="#ACB2BB" stroke="#ACB2BB" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                    <path d="M8.125 8.33325C8.125 8.33325 8.33333 6.45825 10 6.45825C11.6667 6.45825 11.875 7.49992 11.875 8.33325C11.875 8.95937 11.5222 9.5855 10.8165 9.85816C10.3872 10.024 10 10.373 10 10.8333V11.0416" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                    <path d="M10.4168 13.3334C10.4168 13.5635 10.2303 13.7501 10.0002 13.7501C9.77004 13.7501 9.5835 13.5635 9.5835 13.3334C9.5835 13.1033 9.77004 12.9167 10.0002 12.9167C10.2303 12.9167 10.4168 13.1033 10.4168 13.3334Z" stroke="white" stroke-width="0.833333" stroke-linecap="round" stroke-linejoin="round"/>
                                </svg>
                            </el-tooltip>
                        </div>
                        <el-button v-has-permission size="small"  @click="addList(item.user_id,2,item.department_id)">
                            <i class="el-icon--left">
                                    <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
                                    <path d="M10.833 4.79159C10.833 4.33135 10.4599 3.95825 9.99967 3.95825C9.53944 3.95825 9.16634 4.33135 9.16634 4.79159V9.16658H4.79134C4.3311 9.16658 3.95801 9.53968 3.95801 9.99992C3.95801 10.4602 4.3311 10.8333 4.79134 10.8333H9.16634V15.2083C9.16634 15.6685 9.53944 16.0416 9.99967 16.0416C10.4599 16.0416 10.833 15.6685 10.833 15.2083V10.8333H15.208C15.6682 10.8333 16.0413 10.4602 16.0413 9.99992C16.0413 9.53968 15.6682 9.16658 15.208 9.16658H10.833V4.79159Z" fill="#5C636C"/>
                                    </svg>
                                </i>
                            新增数据</el-button>
                    </div>
                </div>
                <div class="operate-box flexbox flexcenter flexbetween font_14" v-if="checkboxEnable.user_id.includes(item.user_id+''+typesData(item.data,2).types)">
                    <div class="flexbox">
                        <div class="operate-selecte">已选 <span style="color:#165DFF;"> {{ checkBoxLength(`multipleTable${typesData(item.data,2).data[0].id}` )}} </span> 项</div>
                        <div class="operate-del" @click="dialogVisible= true,multipleTable_box = `multipleTable${typesData(item.data,2).data[0].id}`">删除</div>
                        <div class="operate-up" @click="dialogListVisible= true,getDepartmentList(),multipleTable_box = `multipleTable${typesData(item.data,2).data[0].id}`">同步信息</div>
                    </div>
                    <div style="cursor: pointer;" @click="closeoperate(`multipleTable${typesData(item.data,2).data[0].id}`)">
                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                            <path d="M17.254 8.25426C17.6706 7.8377 17.6706 7.16233 17.254 6.74577C16.8375 6.32921 16.1621 6.32921 15.7455 6.74577L11.9998 10.4915L8.25402 6.74577C7.83746 6.32921 7.16208 6.32921 6.74552 6.74577C6.32897 7.16233 6.32897 7.8377 6.74552 8.25426L10.4913 12L6.74552 15.7458C6.32897 16.1623 6.32897 16.8377 6.74552 17.2543C7.16208 17.6708 7.83746 17.6708 8.25402 17.2543L11.9998 13.5085L15.7455 17.2543C16.1621 17.6708 16.8375 17.6708 17.254 17.2543C17.6706 16.8377 17.6706 16.1623 17.254 15.7458L13.5083 12L17.254 8.25426Z" fill="#ACB2BB"/>
                        </svg>
                    </div>
                </div>
                <div>
                    <!-- table types2 -->
                    <el-table v-if="typesData(item.data,2).length == 0" :data="[]">
                        <el-table-column  :label="item.label"  v-for="item in tableColumnB"></el-table-column>
                        <div slot="empty"> 
                        <div class="flexbox flexcenter flexcolumn flexjust" style="height:250px">
                            <img src="../../../assets/img/tabnull.svg" alt="">
                            <div class="font_13 color_03">暂无数据,请先添加</div>
                        </div>
                        </div>
                    </el-table>
                    <el-table
                        v-else
                        class="el-table--enable-row-hover"
                        :ref="`multipleTable${typesData(item.data,2).data[0].id}`"
                        :data="typesData(item.data,2).data"
                        @selection-change="selectcheckbox(typesData(item.data,2).data[0],`multipleTable${typesData(item.data,2).data[0].id}`)"
                        @select-all="selectAll(`multipleTable${typesData(item.data,2).data[0].id}`,1)"
                        :cell-class-name="tableCellClassName_partA"
                        @cell-click="selectcell_partA"
                        tooltip-effect="light"
                        style="width: 100%"
                    >
                    <div slot="empty"> 
                        <div  class="flexbox flexcenter flexcolumn flexjust" style="height:250px">
                            <img src="../../../assets/img/tabnull.svg" alt="">
                            <div class="font_13 color_03">暂无数据,请先添加</div>
                        </div>
                        </div>
                        <el-table-column type="selection" width="50" v-if="IsAdmin"></el-table-column>
                        <el-table-column :label="columnItem.label" :width="columnItem.width"  v-for="columnItem in tableColumnB">
                        <template slot="header">
                            <div class="flexbox flexcenter">
                            {{columnItem.label}}
                            <div class="flexbox flexcenter" v-if="columnItem.labelTips">
                            <el-tooltip  placement="top">
                                <div slot="content">{{columnItem.labelTips}}</div>
                                <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
                                    <path d="M16.0418 9.99992C16.0418 13.3366 13.3369 16.0416 10.0002 16.0416C6.66344 16.0416 3.9585 13.3366 3.9585 9.99992C3.9585 6.6632 6.66344 3.95825 10.0002 3.95825C13.3369 3.95825 16.0418 6.6632 16.0418 9.99992Z" fill="#ACB2BB" stroke="#ACB2BB" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                    <path d="M8.125 8.33325C8.125 8.33325 8.33333 6.45825 10 6.45825C11.6667 6.45825 11.875 7.49992 11.875 8.33325C11.875 8.95937 11.5222 9.5855 10.8165 9.85816C10.3872 10.024 10 10.373 10 10.8333V11.0416" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                    <path d="M10.4168 13.3334C10.4168 13.5635 10.2303 13.7501 10.0002 13.7501C9.77004 13.7501 9.5835 13.5635 9.5835 13.3334C9.5835 13.1033 9.77004 12.9167 10.0002 12.9167C10.2303 12.9167 10.4168 13.1033 10.4168 13.3334Z" stroke="white" stroke-width="0.833333" stroke-linecap="round" stroke-linejoin="round"/>
                                </svg>
                            </el-tooltip>
                            </div>
                            </div>
                        </template>
                        <template slot-scope="scope">
                                <template v-if="columnItem.type == 'custom' && columnItem.content == 'content'">
                                    <div class="flexbox flexcenter" @click="dialogForm(scope.row)">
                                        <div class="flexbox flexcenter">
                                            <el-tooltip :content="scope.row.formula" placement="top">
                                                <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none" style="margin-right:4px">
                                                    <path d="M16.0418 9.99992C16.0418 13.3366 13.3369 16.0416 10.0002 16.0416C6.66344 16.0416 3.9585 13.3366 3.9585 9.99992C3.9585 6.6632 6.66344 3.95825 10.0002 3.95825C13.3369 3.95825 16.0418 6.6632 16.0418 9.99992Z" fill="#ACB2BB" stroke="#ACB2BB" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                                    <path d="M8.125 8.33325C8.125 8.33325 8.33333 6.45825 10 6.45825C11.6667 6.45825 11.875 7.49992 11.875 8.33325C11.875 8.95937 11.5222 9.5855 10.8165 9.85816C10.3872 10.024 10 10.373 10 10.8333V11.0416" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                                    <path d="M10.4168 13.3334C10.4168 13.5635 10.2303 13.7501 10.0002 13.7501C9.77004 13.7501 9.5835 13.5635 9.5835 13.3334C9.5835 13.1033 9.77004 12.9167 10.0002 12.9167C10.2303 12.9167 10.4168 13.1033 10.4168 13.3334Z" stroke="white" stroke-width="0.833333" stroke-linecap="round" stroke-linejoin="round"/>
                                                </svg>
                                            </el-tooltip>
                                        </div>
                                        <div v-if="scope.row[columnItem.content]" class="tooltip_show">
                                        <el-tooltip :content="scope.row[columnItem.content]" placement="top-end">
                                                <div class="overflow-hidden">{{ scope.row[columnItem.content]}}</div>
                                        </el-tooltip>
                                            <!-- {{ scope.row[columnItem.content]}} -->
                                        </div>
                                        <div v-else style="color:#ACB2BB">请输入...</div>
                                    </div>
                                </template>
                                <template v-if="columnItem.type == 'textarea'">
                                    <div v-if="flag_1 && scope.row.id == partA_id && scope.row.rowindex == rowIndex && scope.column.columnindex == columnIndex">
                                    <el-input
                                        v-textarea
                                        @blur="blursave(columnItem.content,$event.target.value,scope.row)"
                                        type="textarea"
                                        :autosize="{ minRows: 1, maxRows: 3 }"
                                        :rows="2"
                                        placeholder="请输入内容"
                                        v-model="scope.row[columnItem.content]"
                                        :required="columnItem.rule"
                                        onkeyup="if(this.required)this.value=this.value.replace(/[^\d.]/g, '')"
                                        onKeyPress="if(this.required && event.keyCode!=46 && event.keyCode!=45 && (event.keyCode<48 || event.keyCode>57)) event.returnValue=false">
                                        </el-input>
                                    </div>
                                    <div v-else>
                                        <div v-if="scope.row[columnItem.content]" class="tooltip_show">
                                            <el-tooltip :content="scope.row[columnItem.content]" placement="top-end">
                                                <div class="overflow-hidden">{{ scope.row[columnItem.content]}}</div>
                                        </el-tooltip>
                                            <!-- {{ scope.row[columnItem.content]}} -->
                                        </div>
                                        <div v-else style="color:#ACB2BB">请输入...</div>
                                    </div>
                                </template>
                                <template v-if="columnItem.type == 'input'">
                                    <div v-if="flag_1 && scope.row.id == partA_id && scope.row.rowindex == rowIndex && scope.column.columnindex == columnIndex">
                                        <el-input
                                            v-focus
                                            size="small"
                                            @blur="blursave(columnItem.content,$event.target.value,scope.row)"
                                            placeholder="请输入内容"
                                            v-model="scope.row[columnItem.content]"
                                            :required="columnItem.rule"
                                            onkeyup="if(this.required)this.value=this.value.replace(/[^\d.]/g, '')"
                                            onKeyPress="if(this.required && event.keyCode!=46 && event.keyCode!=45 && (event.keyCode<48 || event.keyCode>57)) event.returnValue=false">
                                            <template slot="append">%</template>
                                            </el-input>
                                        </div>
                                        <div v-else>
                                        <div v-if="scope.row[columnItem.content]">
                                                {{ scope.row[columnItem.content] }} %
                                            </div>
                                        <div v-else style="color:#ACB2BB">请输入...</div>
                                    </div>
                                </template>
                                <template v-if="columnItem.type == 'text'">
                                    <div class="score-style">
                                    {{ scope.row[columnItem.content] || '0.00'}}
                                    </div>
                                </template>
                        </template>
                        </el-table-column>
                    </el-table>
                </div>
                <div class="subtotal flexbox flexcenter">
                    <div>小计：</div>
                    <div class="flexbox">
                        <div class="flexbox flexcenter "  style="margin-right: 20px" v-has-permission >
                            <span :style="{color:weightSum(item.data)<0 ?'red':'#616C85'}">剩余可输入单项权重 </span><span style="color:#EBEBEB;padding:0 8px;" >|</span><span class="font_weight_500" :style="{color:weightSum(item.data)<0 ?'red':'#191B1E'}">{{ weightSum(item.data) }}%</span>
                        </div>
                        <div class="flexbox flexcenter " >
                            <span style="color:#616C85">实际达成值 </span><span style="color:#EBEBEB;padding:0 8px;">|</span><span class="font_weight_500" style="color:#191B1E" >{{ typesData(item.data,2).reality_crrive_score_sum }}</span>
                        </div>
                        <div class="flexbox flexcenter pl_20 " >
                            <span style="color:#616C85">自评权重得分 </span><span style="color:#EBEBEB;padding:0 8px;">|</span><span class="font_weight_500" style="color:#191B1E">{{ typesData(item.data,2).self_score_sum }}</span>
                        </div>
                        <div class="flexbox flexcenter pl_20 " >
                            <span style="color:#616C85">上级权重评分 </span><span style="color:#EBEBEB;padding:0 8px;">|</span><span class="font_weight_500" style="color:#191B1E">{{ typesData(item.data,2).superior_score_sum }}</span>
                        </div>
                        <div class="flexbox flexcenter pl_20 " >
                            <span style="color:#616C85">部门负责人权重评分 </span><span style="color:#EBEBEB;padding:0 8px;">|</span><span class="font_weight_500" style="color:#191B1E">{{ typesData(item.data,2).depar_score_sum }}</span>
                        </div>
                        <div class="flexbox flexcenter pl_20 " >
                            <span style="color:#616C85">总经办权重评分 </span><span style="color:#EBEBEB;padding:0 8px;">|</span><span class="font_weight_500" style="color:#191B1E">{{ typesData(item.data,2).general_score_sum }}</span>
                        </div>
                    </div>
                </div>
            </div>
            <div class="table-heade" v-if="is_editor_table(3)">
                <div class="table-title flexbox flexcenter flexbetween">
                    <div class="module-title font_weight_500">加减分项</div>
                    <div class="flexbox flexcenter">
                        <el-button v-has-permission size="small"  @click="addList(item.user_id,3,item.department_id)">
                            <i class="el-icon--left">
                                    <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
                                    <path d="M10.833 4.79159C10.833 4.33135 10.4599 3.95825 9.99967 3.95825C9.53944 3.95825 9.16634 4.33135 9.16634 4.79159V9.16658H4.79134C4.3311 9.16658 3.95801 9.53968 3.95801 9.99992C3.95801 10.4602 4.3311 10.8333 4.79134 10.8333H9.16634V15.2083C9.16634 15.6685 9.53944 16.0416 9.99967 16.0416C10.4599 16.0416 10.833 15.6685 10.833 15.2083V10.8333H15.208C15.6682 10.8333 16.0413 10.4602 16.0413 9.99992C16.0413 9.53968 15.6682 9.16658 15.208 9.16658H10.833V4.79159Z" fill="#5C636C"/>
                                    </svg>
                                </i>
                            新增数据</el-button>
                    </div>
                </div>
                <div class="operate-box flexbox flexcenter flexbetween font_14" v-if="checkboxEnable.user_id.includes(item.user_id+''+typesData(item.data,3).types)">
                    <div class="flexbox">
                        <div class="operate-selecte">已选 <span style="color:#165DFF;"> {{checkBoxLength(`multipleTable${typesData(item.data,3).data[0].id}`) }} </span> 项</div>
                        <div class="operate-del" @click="dialogVisible= true,multipleTable_box = `multipleTable${typesData(item.data,3).data[0].id}`">删除</div>
                        <div class="operate-up" @click="dialogListVisible= true,getDepartmentList(),multipleTable_box = `multipleTable${typesData(item.data,3).data[0].id}`">同步信息</div>
                    </div>
                    <div style="cursor: pointer;" @click="closeoperate(`multipleTable${typesData(item.data,3).data[0].id}`)">
                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                            <path d="M17.254 8.25426C17.6706 7.8377 17.6706 7.16233 17.254 6.74577C16.8375 6.32921 16.1621 6.32921 15.7455 6.74577L11.9998 10.4915L8.25402 6.74577C7.83746 6.32921 7.16208 6.32921 6.74552 6.74577C6.32897 7.16233 6.32897 7.8377 6.74552 8.25426L10.4913 12L6.74552 15.7458C6.32897 16.1623 6.32897 16.8377 6.74552 17.2543C7.16208 17.6708 7.83746 17.6708 8.25402 17.2543L11.9998 13.5085L15.7455 17.2543C16.1621 17.6708 16.8375 17.6708 17.254 17.2543C17.6706 16.8377 17.6706 16.1623 17.254 15.7458L13.5083 12L17.254 8.25426Z" fill="#ACB2BB"/>
                        </svg>
                    </div>
                </div>
                <div>
                    <!-- table types3 -->
                    <el-table v-if="typesData(item.data,3).length == 0" :data="[]">
                        <el-table-column  :label="item.label"  v-for="item in tableColumnC"></el-table-column>
                        <div slot="empty"> 
                        <div class="flexbox flexcenter flexcolumn flexjust" style="height:250px">
                            <img src="../../../assets/img/tabnull.svg" alt="">
                            <div class="font_13 color_03">暂无数据,请先添加</div>
                        </div>
                        </div>
                    </el-table>
                    <el-table
                        v-else
                        class="el-table--enable-row-hover"
                        :ref="`multipleTable${typesData(item.data,3).data[0].id}`"
                        @selection-change="selectcheckbox(typesData(item.data,3).data[0],`multipleTable${typesData(item.data,3).data[0].id}`)"
                        @select-all="selectAll(`multipleTable${typesData(item.data,3).data[0].id}`,2)"
                        :data="typesData(item.data,3).data"
                        :cell-class-name="tableCellClassName_partA"
                        @cell-click="selectcell_partA"
                        tooltip-effect="light"
                        style="width: 100%"
                    >
                    <div slot="empty"> 
                        <div  class="flexbox flexcenter flexcolumn flexjust" style="height:250px">
                            <img src="../../../assets/img/tabnull.svg" alt="">
                            <div class="font_13 color_03">暂无数据,请先添加</div>
                        </div>
                        </div>
                        <el-table-column type="selection" width="50" v-if="IsAdmin" ></el-table-column>
                        <el-table-column :label="columnItem.label" :width="columnItem.width"  v-for="columnItem in tableColumnC">
                        <template slot="header">
                            <div class="flexbox flexcenter">
                                {{columnItem.label}}
                            <div class="flexbox flexcenter" v-if="columnItem.labelTips">
                            <el-tooltip  placement="top">
                                <div slot="content">{{columnItem.labelTips}}</div>
                                <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
                                    <path d="M16.0418 9.99992C16.0418 13.3366 13.3369 16.0416 10.0002 16.0416C6.66344 16.0416 3.9585 13.3366 3.9585 9.99992C3.9585 6.6632 6.66344 3.95825 10.0002 3.95825C13.3369 3.95825 16.0418 6.6632 16.0418 9.99992Z" fill="#ACB2BB" stroke="#ACB2BB" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                    <path d="M8.125 8.33325C8.125 8.33325 8.33333 6.45825 10 6.45825C11.6667 6.45825 11.875 7.49992 11.875 8.33325C11.875 8.95937 11.5222 9.5855 10.8165 9.85816C10.3872 10.024 10 10.373 10 10.8333V11.0416" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
                                    <path d="M10.4168 13.3334C10.4168 13.5635 10.2303 13.7501 10.0002 13.7501C9.77004 13.7501 9.5835 13.5635 9.5835 13.3334C9.5835 13.1033 9.77004 12.9167 10.0002 12.9167C10.2303 12.9167 10.4168 13.1033 10.4168 13.3334Z" stroke="white" stroke-width="0.833333" stroke-linecap="round" stroke-linejoin="round"/>
                                </svg>
                            </el-tooltip>
                            </div>
                            </div>
                        </template>
                        <template slot-scope="scope">
                                <template v-if="columnItem.type == 'custom' && columnItem.content == 'indec_type'">
                                    <div v-if="flag_1 && scope.row.id == partA_id && scope.row.rowindex == rowIndex && scope.column.columnindex == columnIndex">
                                        <el-select v-model="scope.row.indec_type"  @change="blursave('indec_type',scope.row.indec_type)" placeholder="请选择">
                                            <el-option
                                            v-for="item in options"
                                            :key="item.value"
                                            :label="item.label"
                                            :value="item.value">
                                            </el-option>
                                        </el-select>
                                    </div>
                                    <div v-else>
                                        {{ scope.row.indec_type == 1?'加分项':'减分项' }}
                                    </div>
                                </template>
                                <template v-if="columnItem.type == 'custom'  && columnItem.content == 'indec_info'">
                                    <div @click.stop="dialogImgForm(scope.row)" >
                                        <div v-if="scope.row.indec_info || scope.row.upload.length > 0" class="flexbox flexcenter">
                                            <div style="position:relative">
                                                 <el-popover
                                                  placement="left"
                                                    width="540"
                                                    trigger="hover"
                                                    >
                                                    <div  v-if="scope.row.upload.length > 0">
                                                    <div  style="z-index:999;position: absolute;top: 20px;right: 20px;background: rgba(0, 0, 0, 0.2);color: #FFF;padding: 8px 16px;border-radius: 8px;font-size: 16px;font-weight: 500;">
                                                        {{currentSlideIndex}}/{{scope.row.upload.length}}
                                                    </div>
                                                        <el-carousel height="800px" outside="none" :loop="false" indicator-position='none' :autoplay="false" @change="changeCarouse">
                                                        <el-carousel-item v-for="item in scope.row.upload" :key="item">
                                                         <el-image :src='item.upload' fit="contain"></el-image>
                                                        </el-carousel-item>
                                                    </el-carousel>
                                                    </div>
                                                    <div style="position:relative;margin-right:8px" slot="reference" >
                                                        <el-image v-if="scope.row.upload.length > 0"  style="width: 36px; height: 36px;border-radius: 8px;" :src="scope.row.upload[0].upload" :fit="fit"></el-image>
                                                        <div v-if="scope.row.upload.length > 0" class="flexbox flexcenter flexjust"  style="position: absolute;width: 36px;height: 36px;z-index: 2;top: 0;left: 0;border-radius: 8px;background-color: rgba(0, 0, 0, 0.2);color: #fff;cursor: default;">
                                                            +{{scope.row.upload.length}}
                                                        </div>
                                                    </div>
                                                </el-popover>
                                            </div>
                                            <div class="tooltip_show" style="white-space: normal;display: -webkit-box;-webkit-line-clamp: 3;-webkit-box-orient: vertical;overflow: hidden;text-overflow: ellipsis;">
                                                <el-tooltip :content="scope.row[columnItem.content]"    placement="top-end">
                                                    <div class="overflow-hidden" >
                                                        {{ scope.row.indec_info}}
                                                    </div>
                                                </el-tooltip>
                                            </div>
                                             <!-- {{scope.row.indec_info}} -->
                                        </div>
                                         <div v-else style="color:#ACB2BB">请输入...</div>
                                    </div>
                                </template>
                                <template v-if="columnItem.type == 'textarea'">
                                    <div v-if="flag_1 && scope.row.id == partA_id && scope.row.rowindex == rowIndex && scope.column.columnindex == columnIndex">
                                    <el-input
                                        v-textarea
                                        @blur="blursave(columnItem.content,$event.target.value,scope.row)"
                                        type="textarea"
                                        :autosize="{ minRows: 1, maxRows: 3 }"
                                        :rows="2"
                                        placeholder="请输入内容"
                                        v-model="scope.row[columnItem.content]"
                                        :required="columnItem.rule"
                                        onkeyup="if(this.required)this.value=this.value.replace(/[^\d.]/g, '')"
                                        onKeyPress="if(this.required && event.keyCode!=46 && event.keyCode!=45 && (event.keyCode<48 || event.keyCode>57)) event.returnValue=false"
                                        >
                                        </el-input>
                                    </div>
                                    <div v-else>
                                        <div v-if="scope.row[columnItem.content]" class="tooltip_show">
                                            <el-tooltip :content="scope.row[columnItem.content]"  placement="top-end">
                                                <div class="overflow-hidden">{{scope.row[columnItem.content]}}</div>
                                            </el-tooltip>
                                            <!-- {{ scope.row[columnItem.content]}} -->
                                        </div>
                                        <div v-else style="color:#ACB2BB">请输入...</div>
                                    </div>
                                </template>
                                <template v-if="columnItem.type == 'input'">
                                    <div v-if="flag_1 && scope.row.id == partA_id && scope.row.rowindex == rowIndex && scope.column.columnindex == columnIndex">
                                        <el-input
                                            v-focus
                                            size="small"
                                            @blur="blursave(columnItem.content,$event.target.value,scope.row)"
                                            placeholder="请输入内容"
                                            v-model="scope.row[columnItem.content]"
                                            :required="columnItem.rule"
                                            onkeyup="if(this.required)this.value=this.value.replace(/[^\d.]/g, '')"
                                            onKeyPress="if(this.required && event.keyCode!=46 && event.keyCode!=45 && (event.keyCode<48 || event.keyCode>57)) event.returnValue=false"
                                            >
                                            <template slot="append">%</template>
                                            </el-input>
                                        </div>
                                        <div v-else>
                                            <div v-if="scope.row[columnItem.content]">
                                                {{ scope.row[columnItem.content] }} %
                                            </div>
                                            <div v-else style="#ACB2BB">请输入...</div>
                                    </div>
                                </template>
                                <template v-if="columnItem.type == 'text'">
                                    <div class="score-style">
                                    {{ scope.row[columnItem.content] || '0.00' }}
                                    </div>
                                </template>
                        </template>
                        </el-table-column>
                    
                    </el-table>
                </div>
                <div class="subtotal flexbox flexcenter">
                    <div>小计：</div>
                    <div class="flexbox">
                        <!-- <div class="flexbox flexcenter " >
                            <span style="color:#616C85">加减明细 </span><span style="color:#EBEBEB;padding:0 8px;">|</span><span class="font_weight_500" style="color:#191B1E">{{ typesData(item.data,3).indec_info_sum }}</span>
                        </div> -->
                        <div class="flexbox flexcenter " >
                            <span style="color:#616C85">得分 </span><span style="color:#EBEBEB;padding:0 8px;">|</span><span class="font_weight_500" style="color:#191B1E">{{ typesData(item.data,3).indec_score_sum }}</span>
                        </div>
                    </div>
                </div>
            </div>
            </div>
        </div>
        </div>
        <div v-else>
            <div  class="flexbox flexcenter flexcolumn flexjust" style="height:80vh">
                        <img src="../../../assets/img/tabnull.svg" alt="">
                        <div class="font_13 color_03">暂无数据</div>
            </div>
        </div>
    </div>
    <el-dialog
        :visible.sync="dialogVisible"
        width="400px"
        custom-class='del-dialog'
        :before-close="handleClose">
        <p slot="title" class="dialog-title">
            <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28" fill="none">
                <path fill-rule="evenodd" clip-rule="evenodd" d="M16.4136 4.86706C15.3549 3.04431 12.6451 3.04431 11.5864 4.86706L3.85967 18.17C2.82129 19.9577 4.15529 22.1667 6.27331 22.1667H21.7267C23.8447 22.1667 25.1787 19.9577 24.1403 18.17L16.4136 4.86706ZM14 8.16667C13.4201 8.16667 12.95 8.63096 12.95 9.2037V15.4259C12.95 15.9987 13.4201 16.463 14 16.463C14.5799 16.463 15.05 15.9987 15.05 15.4259V9.2037C15.05 8.63096 14.5799 8.16667 14 8.16667ZM14 17.5C13.4201 17.5 12.95 17.9643 12.95 18.537C12.95 19.1098 13.4201 19.5741 14 19.5741C14.5799 19.5741 15.05 19.1098 15.05 18.537C15.05 17.9643 14.5799 17.5 14 17.5Z" fill="#F53F3F"/>
            </svg>
        </p>
        <p class="font_18" style="color:#191B1E;margin-bottom:8px">删除数据</p>
        <p>确认要删除吗？删除后将无法恢复</p>
        <span slot="footer" class="dialog-footer">
            <div class="flexbox flexcenter" style="justify-content:flex-end;">
                <div style="cursor: pointer;width:100px;line-height:36px;text-align:center;border-radius:12px;border: 1px solid #E8EAEC;background:#FBFBFC;margin-right:8px;" @click="dialogVisible=false">取消</div>
                <div style="cursor: pointer;width:100px;line-height:36px;text-align:center;color:#fff;border-radius:12px;border: 1px solid #F53F3F;background:#F53F3F" @click="delList">删除</div>
            </div>
        </span>
        </el-dialog>
    <el-dialog title="同步人员" custom-class="dialogList" :visible.sync="dialogListVisible" width="400px">
       <div>
          <el-tabs v-model="activeName" @tab-click="handleClick">
                <el-tab-pane v-for="item in departmentList" :label="item.name" :name="item.name"  :key="item.id">
                    <div><el-input size="small" placeholder="请输入人员名称搜索"  suffix-icon="el-icon-search" v-model="ListInfo.query" @input="getPeopleList"></el-input></div>
                    <div style="border-radius: 16px;border: 1px solid #D7DADE;margin-top:12px;">
                        <div style="padding-left:20px;background: #F8F8F9;line-height:44px;border-top-left-radius: 16px;border-top-right-radius: 16px;"><el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">姓名</el-checkbox></div>
                        <template v-if="peopleList.length>0">
                        <div style="line-height:44px;padding-left:20px;height:500px;overflow:auto">
                            <el-checkbox-group v-model="checkedpeles" @change="handleCheckedPelChange">
                                <div class="flexbox flexcolumn">
                                 <el-checkbox v-for="datas in peopleList" :label="datas.id" :key="datas.id">{{datas.nickname}}</el-checkbox>
                                </div>
                            </el-checkbox-group>
                        </div>
                        </template>
                        <div v-else style="line-height:44px;padding-left:20px;">暂无相关人员</div>
                    </div>
                </el-tab-pane>
          </el-tabs>
       </div>
       <span slot="footer" class="dialog-footer">
            <div class="flexbox flexcenter" style="justify-content:flex-end;">
                <div style="cursor: pointer;width:100px;line-height:36px;text-align:center;border-radius:12px;border: 1px solid #E8EAEC;background:#FBFBFC;margin-right:8px;" @click="dialogListVisible=false">取消</div>
                <div style="cursor: pointer;width:100px;line-height:36px;text-align:center;color:#fff;border-radius:12px;border: 1px solid #165DFF;background:#165DFF" @click="updataList">确定</div>
            </div>
        </span>
    </el-dialog>
    <el-dialog :title="formLabelAlign.types == 1?'考核指标':'考核内容'" :visible.sync="dialogFormVisible" width="400px">
       <div>
        <el-form label-position="top" label-width="80px" :model="formLabelAlign">
            <el-form-item label="考核指标" v-if="formLabelAlign.types == 1">
                <el-input v-model="formLabelAlign.index" placeholder="请输入考核指标"></el-input>
            </el-form-item>
            <el-form-item label="考核内容" v-else>
                <el-input v-model="formLabelAlign.content" placeholder="请输入考核内容"></el-input>
            </el-form-item>
            <el-form-item label="指标释义/计算公式">
                <el-input v-model="formLabelAlign.formula" placeholder="指标释义/计算公式"></el-input>
            </el-form-item>
        </el-form>
       </div>
       <span slot="footer" class="dialog-footer">
            <div class="flexbox flexcenter" style="justify-content:flex-end;">
                <div style="cursor: pointer;width:100px;line-height:36px;text-align:center;border-radius:12px;border: 1px solid #E8EAEC;background:#FBFBFC;margin-right:8px;" @click="dialogFormVisible=false">取消</div>
                <div style="cursor: pointer;width:100px;line-height:36px;text-align:center;color:#fff;border-radius:12px;border: 1px solid #165DFF;background:#165DFF" @click="saveform">保存</div>
            </div>
        </span>
    </el-dialog>
     <el-dialog  custom-class="dialogImg" :close-on-click-modal='false' title="加减明细" :visible.sync="dialogImgVisible" @close="resetForm('addPictureSzRef')" width="408px">
        <el-form label-position="top" label-width="auto" size="medium" :hide-required-asterisk='true' :model="addPictureForm"  ref="addPictureSzRef" @submit.native.prevent>
            <el-form-item prop="material" style="margin-bottom:0" label="上传图片">
                <el-upload class="load-uploader" :class="{'load-up_deform':addPictureForm.material.length>0}" drag :show-file-list="false" multiple :disabled="upload_disabled" action :http-request="imgUploadRequest" :before-upload="beforeImgUpload" >
                    <div class="pot_content flexbox flexcenter" :class="{'load-up_deform':addPictureForm.material.length>0}">
                        <img src="../../../assets/img/pot_picture.svg" alt="">
                        <div>
                            <p class="pot_text">点击上传或直接将图片文件拖入此区域</p>
                            <p class="pot_tips">图片大小不超过10M，图片格式为 png、jpg</p>
                        </div>
                    </div>
                </el-upload>
                <div class="picture_list flexbox" v-if="addPictureForm.material.length>0">
                    <div class="picture_box flexbox flexjust" v-for="(item,index) in addPictureForm.material" :key="index">
                            <div class="item_img">
                                <img :src="item.url"   alt="" style="object-fit: contain;">
                                <div class="delet_img flexbox flexcenter flexjust">
                                    <span @click="selectPicture(item.url)">
                                        <svg xmlns="http://www.w3.org/2000/svg" width="13" height="12" viewBox="0 0 13 12" fill="none" style="width:16px;height:16px;margin-right:4px">
                                            <g clip-path="url(#clip0_16114_8373)">
                                            <path d="M0.685444 6.19402L0.68547 6.19408C1.6683 8.39304 3.88579 9.81279 6.33362 9.81279C8.78145 9.81279 10.9989 8.39304 11.9818 6.19408L11.9818 6.19402L12.0546 6.03079L12.0682 6.00024L12.0546 5.9697L11.9818 5.80647L11.9818 5.80641C10.9989 3.60745 8.78145 2.1877 6.33362 2.1877C3.88579 2.1877 1.6683 3.60745 0.68547 5.80641L0.685444 5.80647L0.612654 5.9697L0.599033 6.00024L0.612654 6.03079L0.685444 6.19402ZM6.33362 8.86187C4.33252 8.86187 2.51662 7.74495 1.64648 6.00024C2.51662 4.25554 4.33274 3.13862 6.33362 3.13862C8.33449 3.13862 10.1506 4.25554 11.0208 6.00025C10.1506 7.74495 8.33472 8.86187 6.33362 8.86187ZM4.52089 6.00024C4.52089 6.99865 5.33415 7.81055 6.33362 7.81055C7.33309 7.81055 8.14635 6.99853 8.14635 6.00024C8.14635 5.00196 7.33309 4.18994 6.33362 4.18994C5.33415 4.18994 4.52089 5.00184 4.52089 6.00024ZM5.47285 6.00024C5.47285 5.52659 5.85906 5.14086 6.33362 5.14086C6.80818 5.14086 7.19439 5.52659 7.19439 6.00024C7.19439 6.4739 6.80829 6.85963 6.33362 6.85963C5.85895 6.85963 5.47285 6.4739 5.47285 6.00024Z" fill="white" stroke="white" stroke-width="0.15"/>
                                            </g>
                                            <defs>
                                            <clipPath id="clip0_16114_8373">
                                            <rect width="12" height="12" fill="white" transform="translate(0.333496)"/>
                                            </clipPath>
                                            </defs>
                                        </svg>
                                    </span>
                                    <span @click="deletImg(index)">
                                        <svg xmlns="http://www.w3.org/2000/svg" width="13" height="14" viewBox="0 0 13 14" fill="none" style="width:16px;height:16px">
                                            <path d="M3.56494 3.20234L3.94249 1H8.85056L9.2281 3.20234" stroke="white" stroke-width="1.28" stroke-linejoin="round"/>
                                            <path d="M0.733398 3.3999H12.0597" stroke="white" stroke-width="1.28" stroke-linecap="round"/>
                                            <path fill-rule="evenodd" clip-rule="evenodd" d="M10.4868 3.3999L9.85752 13H2.93588L2.30664 3.3999H10.4868Z" stroke="white" stroke-width="1.28" stroke-linecap="round" stroke-linejoin="round"/>
                                            <path d="M4.82324 10.6001H7.96944" stroke="white" stroke-width="1.28" stroke-linecap="round"/>
                                            </svg>
                                    </span>
                                </div>
                            </div>
                            <div class="img-name">{{item.name}}</div>
                    </div>
                </div>
            </el-form-item>
            <el-form-item prop="material" style="margin-bottom:0" label="明细说明">
              <el-input placeholder="请输入文本" v-model="addPictureForm.indec_info"></el-input>
            </el-form-item>
        </el-form>
        <span slot="footer" class="dialog-footer">
            <div class="flexbox flexcenter" style="justify-content:flex-end;">
                <div style="cursor: pointer;width:100px;line-height:36px;text-align:center;border-radius:12px;background:#FBFBFC;margin-right:8px;font-size: 14px;border: 1px solid rgb(232, 234, 236)" @click="resetForm('addPictureSzRef')">取消</div>
                <div style="cursor: pointer;width:100px;line-height:36px;text-align:center;color:#fff;border-radius:12px;background:#165DFF;font-size: 14px;" @click="saveform('img')">保存</div>
            </div>
        </span>
    </el-dialog>
    <el-dialog :close-on-click-modal='false' title="导出任务" :visible.sync="dialogExportVisible" width="585px">
        <el-table :data="exportData" style="width: 100%" >
                <el-table-column align="center" prop="create_time" label="操作时间"  ></el-table-column>
                <el-table-column align="center" prop="date" label="数据日期" width="117px">
                    <template slot-scope="scope">{{scope.row.year}}-{{scope.row.month}}</template>
                </el-table-column>
                <el-table-column  prop="name" label="操作状态" width="133px">
                    <template slot-scope="scope"><div class="operate_status" :style="{color:exportStatus[scope.row.status].bg}">{{ exportStatus[scope.row.status].text}}</div></template>
                </el-table-column>
                <el-table-column  align="center" prop="url" label="飞书链接" width="113px">
                    <template slot-scope="scope">
                        <el-link :href="scope.row.url" :underline="false" target="_blank">
                            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
                                <path d="M0 0H13.3333C14.8061 0 16 1.19391 16 2.66667V16H2.66667C1.19391 16 0 14.8061 0 13.3333V0Z" fill="#35BD4B"/>
                                <path d="M3.83301 3.8335H11.0663C11.6739 3.8335 12.1663 4.32598 12.1663 4.9335V12.1668H4.93301C4.32549 12.1668 3.83301 11.6743 3.83301 11.0668V3.8335Z" stroke="white"/>
                                <path d="M3.83301 7.8335H12.333" stroke="white"/>
                                <path d="M8 12L8 3.33333" stroke="white"/>
                            </svg>
                        </el-link>
                    </template>
                </el-table-column>
        </el-table>
        <div class="flexbox flexcenter" style="justify-content: end;margin-top:10px;">
            <el-pagination background layout="total, prev, pager, next"  @current-change="handleCurrentChange" :current-page="ExportInfo.page" :page-size="ExportInfo.limit"  :total="ExportTotal">
            </el-pagination>
        </div>
         <span slot="footer" class="dialog-footer">
            <div class="flexbox flexcenter" style="justify-content:flex-end;">
               <div style="cursor: pointer;width:100px;line-height:36px;text-align:center;color:#fff;border-radius:12px;background:#165DFF;font-size: 14px;" @click="dialogExportVisible = false">关闭</div>
            </div>
        </span>
    </el-dialog>
    <div class="picture_boxs" v-if="is_pic">
            <span class="close_picture" @click="closePicture()"></span>
            <img :src="isimgSrc" alt="" class="picture_scale">
        </div>
  </div>
</template>

<script>
import {tableColumn,tableColumnB,tableColumnC} from './data';
import { clientInfo,clientTos,tosLink } from "../../../assets/js/oss";
import downLoad from "../../../excel/ExportDown";
import * as XLSX from "xlsx/xlsx.mini";
export default {
  
  data() {
    return {
        itemHeight:[],
    exportLoading:false,
    isimgSrc:"",
    is_pic:false,
    currentSlideIndex:1,
    tableColumn,
    tableColumnB,
    tableColumnC,
    options: [
        {
        value: 1,
        label: '加分项'
        },
        {
        value: 2,
        label: '减分项'
        },
    ],
    tableModules:[
    {
        id: 1,
        nickname: '关键绩效指标'
    },
    {
        id: 2,
        nickname: '重点工作'
    },
    {
        id: 3,
        nickname: '加减分项'
    },
    ],
    centreQuery:"",
    editor_table:[],
    loading:false,
    Dateval:'',
    backupRow:{},
    checkAll: false,
    isIndeterminate:false,
    dialogFormVisible:false,
    dialogExportVisible:false,
    upload_disabled: false,
    addPictureForm:{
        id:"",
        material:[],
        indec_info:''
    },
    checkedpeles:[],
    activeName:"",
    ListInfo:{
        dep_id:'',
        query:''
    },
    formLabelAlign:{
        types:0,
        content:'',
        index:'',
        formula:'',
        id:''
    },
    peopleList:[],
    multipleTable_box:"",
    dialogListVisible:false,
    dialogVisible:false,
    dialogImgVisible:false,
    Queryinfo: {
        year: '',
        month: '',
        dep_id:''
    },
    ExportInfo:{
        page:"1",
        limit:"10",
        name:''
    },
    ExportTotal:0,
    exportData:[],
    exportStatus:{1:{text:'等待处理',bg:'#B4B7BD'},2:{text:'处理中',bg:'#B4B7BD'},3:{text:'处理成功',bg:'#00C271'},4:{text:'处理失败',bg:'#FE6262'}},
    flag_1:false,
    partA_id:'',
    rowIndex:"",
    columnIndex:"",
    AllList:[],
    cloneAllList:[],
    tableData_partA: [],
    checkboxEnable:{
    user_id:[],
    },
    departmentList:[],
    IsAdmin:false,
    iconBg:[]
    };
  },
  computed:{
    is_editor_table(){
        return (types)=>{
            if(this.editor_table.length > 0){
                if(this.editor_table.includes(types)){
                    return true
                }else{
                    return false
                }
            }else{
                return true
            }
        }
    },
    checkBoxLength(){
        return (data)=> {
            if(this.$refs[data]){
                return this.$refs[data][0].selection.length
            }else{
                return 0
            }
        }
    },
    typesData(){
        // 找到需要的数据 data:查找的数组 module:查找的版块
        return(data,module)=>{
            let foundData = data.find(item => item.types == module); 
            if (foundData) {  
               return foundData; 
            } else { 
               return []
            }
        }
    },
    weightSum(){
        return(data,module)=>{
            let sumOfValues = [];
            for(let [index,value] of  data.entries()){
                if(value.types != 3){
                   value.data.map((e) => {
                     sumOfValues.push(+e.weight);  
                });
                }
            }
            let sum = sumOfValues.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
            
            if((100 - sum + '').length >5)return (100 - sum).toFixed(2)
            return (100 - sum)
        }
    }
  },
  created() {
    this.$bus.on("dep_id", (value) => {
        this.Queryinfo.dep_id = value
        this.getList();
    });
    this.$bus.on("bg_color", (value) => {
        this.iconBg = value
    });
    this.$bus.on("scrollInto",(value) => {
        let scrollBox = document.getElementsByClassName('pr-dashboard')[0]
        let count;
        const index = this.cloneAllList.findIndex(item => item.user_id === value)
            count =  this.itemHeight.slice(0,Math.max(0,index))
        let sum = count.reduce((accumulator, currentValue) => accumulator + currentValue, 0);

        scrollBox.scrollTo({
            top: index == 0 ? sum : sum + 2,
            left: 0, 
            behavior: 'smooth' 
        })
    })
    let { year, month } = this.getDate();
    this.Dateval = `${year}-${month}`;  
    this.Queryinfo.year = year;
    this.Queryinfo.month = month;
    // this.getDepartmentList()
    this.getList();
    //     this.getExportList()
  },
  mounted(){
    let timerId = setInterval(()=>{
        if(this.AllList.length > 0){
            clearInterval(timerId);
            this.timerTooltip();
        }
    }, 1000);
    this.hasPermission()
  },
  methods: {
    updata(){
          this.$confirm('此操作将同步上一个月份数据, 是否继续?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
            this.$http.get("/performance/Performance/monthcopy").then((res) => {
             console.log(res)
             if(res.data.code == 200){
                 this.$message({
                    type: 'success',
                    message: '同步成功!'
                });
             }else{
                 this.$message({
                    type: 'error',
                    message: res.data.msg
                });
             }
        })
          
        }).catch(() => {});
    },
    //过滤版块 从新赋值计算
    timerTooltip(o){
        this.$nextTick(()=>{
            document.querySelectorAll('.tooltip_show').forEach(e=>{
                Array.from(e.children).forEach(es=>{
                    if(e.scrollHeight > 69){
                        es.__vue__.disabled = false
                    }else{
                        es.__vue__.disabled = true
                    }
                })
             })  
        })
    },
    // 每页显示多少条数据
    handleSizeChange(val) {
        this.ExportInfo.limit = val;
        this.getExportList();
    },
    // 当前页切换
    handleCurrentChange(val) {
        this.ExportInfo.page = val;
        this.getExportList();
    },
    getExportList(){
        this.$http.get("/performance/Performance/exportList", {params:this.ExportInfo}).then((res) => {
              if (res.data.code != 200)return this.$message.error(res.data.msg);
              this.ExportTotal = res.data.data.count
              this.exportData = res.data.data.list
        })
    },
    exportxsls(){
        this.exportLoading = true;
        this.$http.post("/performance/Performance/export", {year:this.Queryinfo.year ,month: this.Queryinfo.month,name:'导出任务'}).then((res) => {
            this.exportLoading = false;
            if (res.data.code != 200)return this.$message.error(res.data.msg);
            this.$message.success('导出成功，请前往导出记录查看')
        }).catch(err => this.exportLoading = false)
    },
    exportxsl(e){
        console.log(e)
        this.exportLoading = true;
         let list = JSON.parse(JSON.stringify(this.cloneAllList))
            var excelDatas = [
                {
                    tHeader: [
                        "姓名",
                        "自评合计",
                        "上级评分合计",
                        "部门负责人评分合计",
                        "总经办评分合计",
                    ],
                    filterVal: [
                        "name",
                        "self_sum",
                        "superior_sum",
                        "department_sum",
                        "general_sum",
                    ],
                    tableDatas: this.cloneAllList,
                    sheetName: "绩效汇总",
                },
            ];
            downLoad(excelDatas, "绩效汇总列表");
            this.exportLoading = false;
    },
    closePicture(){
           this.is_pic = false;
           this.isimgSrc = e
    },
    // 点击放大图片
        selectPicture(e) {
            this.is_pic = true;
            this.isimgSrc = e
        },
  deletImg(index){
        this.addPictureForm.material.splice(index, 1);
    },
  changeCarouse(index){
   this.currentSlideIndex = index+1; 
  },
    // 图片上传格式验证
        beforeImgUpload(file) {
            console.log('beforeImgUpload')
            var testmsg = file.name.substring(file.name.lastIndexOf(".") + 1);
            const extension =
                testmsg === "jpg" ||
                testmsg === "JPG" ||
                testmsg === "png" ||
                testmsg === "PNG" ||
                testmsg === "jpeg" ||
                testmsg === "JPEG" ||
                testmsg === "gif";
            const isLt2M = file.size / 1024 / 1024 < 10;
            if (!extension) {
                this.$message({
                    message: "上传图片只能是jpg / png格式!",
                    type: "error",
                });
                return false;
            }
            if (!isLt2M) {
                this.$message({
                    message: "上传文件大小不能超过 10MB!",
                    type: "error",
                });
                return false;
            }
            return extension || isLt2M;
        },
    // 图片上传到oss
        async imgUploadRequest(option) {
            console.log('imgUploadRequest')
                let testmsg = option.file.name.substring(
                    option.file.name.lastIndexOf(".")
                );
                let fileName =  option.file.name
                console.log(option)
                try {
                    const clienttos = clientTos
                    let file = option.file;
                    let nowData = new Date();
                    let year = nowData.getFullYear();
                    let month =
                        nowData.getMonth() + 1 < 10
                            ? "0" + (nowData.getMonth() + 1)
                            : nowData.getMonth() + 1;
                    let date =
                        nowData.getDate() < 10
                            ? "0" + nowData.getDate()
                            : nowData.getDate();
                    let getData = year + "-" + month + "-" + date;
                    let relativePath = "source4.0/" + getData + "/";
                    const ret = await clienttos.putObject({
                        key: relativePath + fileName,
                        body: file,
                    });
                    if (ret.statusCode === 200) {
                        let url = tosLink+relativePath + encodeURIComponent(fileName)
                        this.addPictureForm.material.push({
                            url: url,
                            name: fileName,
                        });
                        this.$message({
                            message: "上传成功！",
                            type: "success",
                        });
                    } else {
                        this.$message.error("上传失败！");
                    }
                    console.log(this.addPictureForm)
                } catch (error) {
                    this.is_change = 0;
                    this.$message.error("上传失败！");
                }
        },
    // 关闭重置表单
    resetForm(formName) {
        this.$refs[formName].resetFields();
        this.addPictureForm.material = [];
        this.dialogImgVisible = false;
    },
    // 打开上传图片弹窗
    dialogImgForm(row) {
        if(!this.hasPermission(row.user_id,row.types,{label:'加减明细'}))return;
        this.addPictureForm.id = row.id
        this.addPictureForm.indec_info = row.indec_info
        console.log(row)
        if(row.upload.length > 0){
         let NewArr =  row.upload.map(e=>{
                let parts = e.upload.split('/');  
                let lastPart = parts[parts.length - 1]
                return{
                    name:lastPart, 
                    url:e.upload
                }
            })
          this.addPictureForm.material = NewArr
        }else{
          this.addPictureForm.material = []
        }
        this.dialogImgVisible = true;
    },
   async  handle(ev){
       let file = ev.raw;
      if (!file) {
        console.log("文件打开失败");
        return;
      } else {
         const reader = new FileReader();  
      reader.onload = (e) => {  
        const data = new Uint8Array(e.target.result);  
        console.log(e)
        const workbook = XLSX.read(data, { type: 'array' });  
  
        // 获取第一个工作表  
        const worksheetName = workbook.SheetNames[0];  
        const worksheet = workbook.Sheets[worksheetName];  
  
        // 将工作表数据转换为JSON对象数组  
        const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });  
  
        console.log(jsonData); // 打印获取到的数据  
        if(jsonData.length>0 && jsonData[0][0] == "姓名")jsonData.shift();
        // 将上面数据转换成需要的数据
          let arr = [];
          //item[]中的内容为Excel中数据的表头,上传的数据表头必须根据标题填写,否则无法读取
         let newArr = jsonData.filter(item => item.length > 0);
          newArr.forEach((item) => {
            let obj = {};
            obj.nickname = item[0] || '';
            obj.only_code = item[1] || '';
            obj.index= item[2] || '';
            obj.formula= item[3] || '';
            obj.product= item[4] || '';
            obj.target= item[5] || '';
            obj.weight= item[6] || '';
            obj.source= item[7] || '';
            obj.arrive= item[8] || '';
            arr.push(obj);
          });
          
        this.$http.post("/performance/Performance/import", { from : arr, year: this.Queryinfo.year,month: this.Queryinfo.month}).then((res) => {
             if (res.data.code != 200)return this.$message.error(res.data.msg);
             this.$message.success('导入成功')
             this.getList()
           });
      };  
      reader.readAsArrayBuffer(file);
      }
    },
    // 清空筛选
        clearQuery() {
            this.editor_table = [];
            this.getList()
        },
    // 筛选
        filteredData(query, list, name) {
            var list = list,
                query = query;

            if (!query) {
                return list;
            }
            query = query.trim();

            list = list.filter(function (item) {
                if (item[name].indexOf(query) !== -1) {
                    return item;
                }
            });
            return list;
        },
    hasPermission(currentId = '',types = '',column = ''){
        const userRole = "17";
        const userId = [10000]
        let {role,id} = JSON.parse(window.localStorage.getItem("userinfo"));
        let Nrole;
        if(role){
         Nrole = role.split(',');
        }else{
         Nrole = []
        }
        console.log(currentId,types,column,id)
        if(!userId.includes(id)){
            if(!Nrole.includes(userRole)){
                this.IsAdmin = false;
                if(currentId == id){
                    if(types == 2 && column.label == "自评达成情况" || types == 2 && column.label == "自评分数"){
                        return true
                    }else{
                        return false
                    }
                }else if(types == 2 && column.label == "上级权重评分"){
                        return true
                }else if(types == 3 && column.label == "加减明细" || column.label == "考核得分"){
                    return true
                }else{
                    return false
                }
            }
        }
        this.IsAdmin = true;
        return true
    },
    getDate(){
        const now = new Date();  
        const year = now.getFullYear(); // 获取当前年份  
        const month = String(now.getMonth() + 1).padStart(2, '0'); // 获取当前月份（0-11），加1并补零  
        const date = String(now.getDate()).padStart(2, '0'); // 获取当前日期并补零  
        return {year,month,date}
    },
    closeoperate(dom){
         let i_Enable = this.$refs[dom][0].data[0].user_id+''+this.$refs[dom][0].data[0].types;
        const userIdIndex = this.checkboxEnable.user_id.indexOf(i_Enable);
        if (userIdIndex !== -1) {
            this.$refs[dom][0].clearSelection();
            this.checkboxEnable.user_id.splice(userIdIndex, 1);
        }
    },
     setDisabled(row) {
        console.log(row)
      if (row.data.length === 1) {
        return false;
      } else {  
        return true; 
      }
    },
    changeDate(){
         this.Queryinfo.year = this.Dateval.split('-')[0]
         this.Queryinfo.month= this.Dateval.split('-')[1]
        this.getList()
    },
    saveform(type){
        if(type == 'img'){
            let fromArr = this.addPictureForm.material.map(e => {return{pefield: "indec_info",upload:e.url}})
            console.log(fromArr)
            this.$http.post("/performance/Performance/performanceEdit", {'id':this.addPictureForm.id,'upload':fromArr,'from':{'indec_info':this.addPictureForm.indec_info}}).then((res) => {
             if (res.data.code != 200)return this.$message.error(res.data.msg);
             this.resetForm('addPictureSzRef')
             this.getList();
             this.$message.success('保存成功')
           });
        }else{
            this.$http.post("/performance/Performance/performanceEdit", {id:this.formLabelAlign.id,from:{
                  formula: this.formLabelAlign.formula,
                  content:this.formLabelAlign.content,
                  index:this.formLabelAlign.index 
            }}).then((res) => {
               this.dialogFormVisible = false;
             if (res.data.code != 200)return this.$message.error(res.data.msg);
             this.getList();
             this.$message.success('保存成功')
           });
        }
    },
    dialogForm(item){
        const userRole = "17";
        const userId = [10000]
        let {role,id} = JSON.parse(window.localStorage.getItem("userinfo"));
        let Nrole;
        if(role){
         Nrole = role.split(',');
        }else{
         Nrole = []
        }
        if(!userId.includes(id)){
            if(!Nrole.includes(userRole)){
                return;
            }
        }
        this.formLabelAlign.types = item.types
        this.formLabelAlign.index = item.index
        this.formLabelAlign.content = item.content
        this.formLabelAlign.formula = item.formula
        this.formLabelAlign.id = item.id
        this.dialogFormVisible = true
    },
    updataList(){
        let user = this.checkedpeles.map(e=>e)
        if(user.length <=0)return this.$message.error('请选择同步人员')
        this.$http.post("/performance/Performance/performanceCopy",{
            ids:this.$refs[this.multipleTable_box][0].selection.map(e=>e.id),
            user_ids:this.checkedpeles.map(e=>e)
        }).then(res=>{
              this.dialogListVisible=false;
              if(res.data.code != 200)this.$message.error(res.data.msg);
              this.getList();
               this.checkedpeles = []
               this.isIndeterminate= false;
                this.checkAll = false;
                this.ListInfo.query = '';
              this.$message.success('同步成功')
        })
      
    },
     handleCheckAllChange(val) {
        this.checkedpeles = val ? this.peopleList.map(e=>e.id) : [];
        this.isIndeterminate = false;
      },
      handleCheckedPelChange(value) {
        let checkedCount = value.length;
        this.checkAll = checkedCount === this.checkedpeles.length;
        this.isIndeterminate = checkedCount > 0 && checkedCount < this.checkedpeles.length;
      },
    handleClick(tab, event) {
       this.ListInfo.dep_id =  this.departmentList[tab.index].id
        this.getPeopleList()
      },
    // 获取部门列表
      getDepartmentList(){
        this.$http.get("/performance/Performance/departmentList").then(res=>{
              if(res.data.code != 200)return this.$message.error(res.data.msg);
              this.activeName = res.data.data[0].name
              this.ListInfo.dep_id = res.data.data[0].id
              this.departmentList = res.data.data
              this.getPeopleList()
        })
      },

      // 获取人员列表
      getPeopleList(){
        this.$http.get("/performance/Performance/peopleList",{params: this.ListInfo}).then(res=>{
            if(res.data.code != 200)this.$message.error(res.data.msg);
            let arr = [];
            res.data.data.map(e=>arr.push(...e.data))
            this.peopleList = arr;
            console.log(arr)
        })
      },

      // 选择部门
      selectdepartment(item,index){
        this.queryInfo.dep_id = item;
        this.department_Index = index;
        this.getPeopleList();
      },
    delList(){
        let i_Enable = this.$refs[this.multipleTable_box][0].data[0].user_id+''+this.$refs[this.multipleTable_box][0].data[0].types;
        const userIdIndex = this.checkboxEnable.user_id.indexOf(i_Enable);
        if (userIdIndex !== -1) {
            this.checkboxEnable.user_id.splice(userIdIndex, 1);
        }
        console.log(this.$refs[this.multipleTable_box][0])
       let arr =  this.$refs[this.multipleTable_box][0].selection.map(e=>e.id)
        this.$http.post("/performance/Performance/performanceDel", {ids:arr}).then((res) => {
          this.dialogVisible = false;
          if (res.data.code != 200)return this.$message.error(res.data.msg);
          this.getList();
          this.$message.success('删除成功')
        });
    },
    selectAll(selection){
        if(this.$refs[selection][0].selection.length == 0 && this.$refs[selection][0].data.length > 0){
            let i_Enable = this.$refs[selection][0].data[0].user_id +''+ this.$refs[selection][0].data[0].types
            const userIdIndex = this.checkboxEnable.user_id.indexOf(i_Enable);
            if (userIdIndex !== -1) {
                 this.checkboxEnable.user_id.splice(userIdIndex, 1);
            }
        }
    },
    selectcheckbox(row,dom){
        console.log(row,dom)
        if(this.$refs[dom][0].selection.length > 0 && this.$refs[dom][0].data.length > 0){
            let i_Enable = row.user_id+''+row.types;
            const userIdIndex = this.checkboxEnable.user_id.indexOf(i_Enable);
            if (userIdIndex === -1) {
                 this.checkboxEnable.user_id.push(i_Enable);  
            }
         
        }else{
            let i_Enable = this.$refs[dom][0].data[0].user_id+''+this.$refs[dom][0].data[0].types;
            const userIdIndex = this.checkboxEnable.user_id.indexOf(i_Enable);
            if (userIdIndex !== -1) {
                 this.checkboxEnable.user_id.splice(userIdIndex, 1);
            }
        
        }
    },
    selectcell_partA(row, column){
        if(!this.hasPermission(row.user_id,row.types,column))return;
        this.flag_1 = true
        this.backupRow = {...row};
        this.partA_id = row.id
        this.rowIndex = row.rowindex
        this.columnIndex = column.columnindex
    },
     tableCellClassName_partA({row, column, rowIndex, columnIndex}){//注意这里是解构
      //利用单元格的 className 的回调方法，给行列索引赋值
      row.rowindex = rowIndex;
      column.columnindex = columnIndex;
    },
    blursave(name,data,row){
        this.flag_1 = false
        // let arr = ['superior_score','depar_score','general_score',]
        // if(arr.includes(name) && row.types==2) {
        //     if(+data > +row.weight){
        //         this.getList();
        //         return this.$message.error('输入的值不能超过单项权重');
        //     } 
        // }else if(name == 'weight' && row.types==2){
        //     if(+data < +row.superior_score || +data < +row.depar_score || +data < +row.general_score){
        //         this.getList();
        //         return this.$message.error('单项权重不能小于评分最大值');
        //     } 
        // }
        this.timerTooltip();
        if(this.backupRow[name] == data)return;
        
         this.$http.post("/performance/Performance/performanceEdit", {id:this.partA_id,from:{[name]:data}}).then((res) => {

          this.getList();
          if (res.data.code != 200) {
            return  this.$message.error(res.data.msg)
          }
            this.$message.success('编辑成功')
        });
       
    },
    addList(user_id,types,department_id){
         this.$http.post("/performance/Performance/performanceAdd", {
          year:this.Queryinfo.year,
          month: this.Queryinfo.month,
          user_id:user_id,
          department_id:department_id,
          types:types,
          indec_type:1
         }).then((res) => {
          if (res.data.code != 200)return this.$message.error(res.data.msg);
        
          this.getList();
          this.$message.success('新增成功')
        });
       
    },
     calculateContainerHeight() {
      // 计算容器的高度，即所有项目高度的总和
    //   this.$nextTick(()=>{
    //      this.containerHeight = document.getElementsByClassName('personnel-box')[0].scrollHeight
    //   })
    },
     calculateItemHeights() {
      // 获取每个项目的高度并存储在数组中
      this.$nextTick(()=>{
        this.itemHeight = this.AllList.map(item => this.getItemHeight(item));
        this.containerHeight = this.itemHeight.reduce((acc, item) => acc + item, 0)
        // console.log(this.containerHeight)
      })
    },
    getItemHeight(item) {
      // 获取单个项目的高度
      // 这里假设你有一种方法来计算项目的高度，比如通过DOM元素的高度
       return   document.getElementById(`item-${item.user_id}`).offsetHeight
    },
     handleScroll(event) {  
         this.updateVisibleItems();
    },  
    updateVisibleItems(){
        // console.log(this.itemHeight)
    this.$nextTick(()=>{
      const scrollTop = document.getElementsByClassName('pr-dashboard')[0].scrollTop;
      const viewportHeight = document.getElementsByClassName('pr-dashboard')[0].clientHeight;
     
      let accumulatedHeight = 0;
      let startIndex = 0;
    //   let leftIndex = 0;
      let endIndex = this.cloneAllList.length - 1; // 调整为最后一个索引
        if(this.iconBg.length<=0){
            let backgroundItem = ['#68D6EE','#6885EE','#EEA068','#eec068'];
            for(let icon of this.cloneAllList){
                this.iconBg.push(backgroundItem[Math.floor(Math.random() * backgroundItem.length)])
            }
        }
        console.log(this.itemHeight,scrollTop,viewportHeight)
        for (let i = 0; i < this.cloneAllList.length; i++) {
            accumulatedHeight += this.itemHeight[i];
            console.log(accumulatedHeight)
            if (accumulatedHeight >= scrollTop) {
                // leftIndex = i
                    startIndex = i ;
            break;
            }
        }
        // console.log(leftIndex)
        accumulatedHeight = 0;
        for (let i = startIndex; i < this.cloneAllList.length; i++) {
            accumulatedHeight += this.itemHeight[i];
            if (accumulatedHeight >= scrollTop + viewportHeight) {
                    endIndex = i;
            break;
            }
        }

        // 确保 endIndex 不超过项目长度
        endIndex = Math.min(endIndex, this.cloneAllList.length - 1);
        //  this.$bus.emit("follow_personnel", leftIndex);
        // 切片可见项目以确保仅包含 5 个项目
        console.log(startIndex,endIndex,'-------------------------')
        const slicedItems = this.cloneAllList.slice(startIndex, endIndex+1).map((item, index) =>({
           ...item,
           domHeight:this.itemHeight[startIndex + index],
           nameBg:this.iconBg[startIndex + index],
           top: this.itemHeight.slice(0, startIndex + index).reduce((acc, curr) => acc + curr, 0)
        }));
        console.log(slicedItems)
        // 如果可见项目超过 5 个，则切片以保持仅包含 5 个项目
        this.AllList = slicedItems.slice(0, 5);
    })
    },
    getList() {
        this.loading = true;
     this.$http.get("/performance/Performance/performanceList", {
          params: this.Queryinfo,
        })
        .then((res) => {
          if (res.data.code != 200){
            this.loading = false 
            return this.$message.error(res.data.msg);
            }
            this.AllList = res.data.data;
            this.cloneAllList = JSON.parse(JSON.stringify(res.data.data))
            this.calculateContainerHeight();
            this.calculateItemHeights();
            this.updateVisibleItems();
            this.$nextTick(()=>{
                this.timerTooltip();
            })
            this.loading = false;
        });
    },
  },
};
</script>


<style scoped>
svg{
    pointer-events: auto;
}

>>> .export_btn span{
    display: flex;
    align-items: center;
    gap: 8px;
}
 >>>.import-btn , >>>.el-button--primary.is-plain:focus,>>>.el-button--primary.is-plain:hover{
     color: #165DFF !important;
}
>>>.import-btn , >>> .el-button--primary.is-plain{
    margin: 0 12px;
    border-color: #165DFF;
     background: #FFF !important;
     color: #165DFF;
}
 >>>.dialogList  .el-dialog__header{
    border-bottom: 0 !important;
    height: 28px;
    padding: 16px 16px 2px !important;
}
>>> .dialogList .el-dialog__body{
    padding-top: 0 !important;
    padding-bottom: 6px !important;
}
>>> .dialogList .el-tabs__item{
    left: 8px;
    /* padding: 0 8px !important; */
}
>>> .dialogList .el-tabs__nav-wrap::after{
    display: none;
}
>>> .dialogList .el-tabs__active-bar{
    padding: 0px 8px;
}
>>> .dialogList .el-input__inner{
    border-radius: 8px;
}
.pr-dashboard-export >>> .el-button {
    border-radius: 8px;
    padding: 6px 15px;
    background: #165DFF;
}
.pr-dashboard-export >>> .el-button .el-icon--left{
    margin-right: 8px;
    vertical-align:middle;
}

/deep/ .el-button--primary:focus, .el-button--primary:hover{
    background: #165DFF;
    border-radius: 8px;
}
/deep/ .el-input--prefix .el-input__inner{
    border-radius: 8px;
    padding-left: 12px;
}
/deep/ .el-input__prefix{
    right: 4px;
    color: #616C85;
    left: unset;
}
/deep/ .el-date-editor.el-input {
    width: 157px;
}
/deep/ .el-textarea__inner {  
  resize: none;  
}
/deep/ .el-table .cell{
    white-space: normal;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    text-overflow: ellipsis;
}
/deep/ .el-input-group__append{
    padding: 0 12px;
     background: #fff;
    border-top-right-radius: 8px;
    border-bottom-right-radius: 8px;
}
/deep/ .el-input-group--append .el-input__inner{
border-top-left-radius: 8px;
border-bottom-left-radius: 8px;
}

/deep/ .el-table--border td, /deep/ .el-table--border th{
border-right:none !important;
}
/deep/ .el-table::before{
    height: 0 !important;
}
/deep/ .el-table-column--selection .cell{
    text-align: center;
}
/* 设置圆角以及边框颜色 */
.el-table{
    border-radius: 12px;
    border-top:1px solid #DEDEDE;
    border-right:1px solid #DEDEDE;
    border-bottom:1px solid #DEDEDE;
    border-left:1px solid #DEDEDE;
}
/* /deep/ .el-table td, /deep/  .el-table th.is-leaf {
    border-bottom: 0;
} */
 /deep/ .el-table td,/deep/  .el-table th.is-leaf,/deep/ .el-table--border,/deep/ .el-table--group{
    border-color: #F8F8F9 !important; 
}

/deep/ .el-table .el-table__body-wrapper tr > td:hover {
  background-color: #F8F8F9 !important; /* 你可以更换为你想要的颜色 */
}

/* 去除Element UI Table行hover样式 */
/deep/ .el-table--enable-row-hover .el-table__body tr:hover > td {
  background-color: inherit;
}
 
/* 去除Element UI Table行hover时的边框 */
/deep/ .el-table .el-table__body tr.el-table__row:hover .el-table_1_column_1 {
  border-color: inherit;
}
.personnel-box /deep/ .el-button{
    font-size: 14px;
    margin-left: 12px;
    border-radius: 8px;
    border-color: #E8EAEC;
    color: #5C636C; 
    background-color: #FBFBFC;
    padding: 4px 12px 4px 8px !important;
}
.personnel-box /deep/ .el-button:hover{
        background-color: #FBFBFC;
}
.personnel-box /deep/ .el-icon--left{
    margin-right: 2px;
    vertical-align: middle;
}
       
>>>.del-dialog .el-dialog__body{
    padding:0 20px !important;
}

>>>.del-dialog .el-dialog__header{
    border-bottom:none !important;
}
.score-style{
    color: #191B1E;
    font-weight: 500;
    border-radius: 8px;
    border: 1px solid #E8EAEC;
    background: #F8F8F9;
    display: inline-block;
    padding: 2px 9px;
}
.pr-dashboard {
  height: calc(100vh - 84px);
  overflow: auto;
  width: 100%;
  /* padding-left: 12px; */
}
.pr-dashboard-export {
  position: sticky;
  top: 0;
  z-index: 99;
  box-shadow: 0px 4px 4px rgba(221, 221, 221, 0.3);
  background: #fff;
  border-radius: 12px;
  padding: 17px 20px;
}
.personnel-box{
    position: relative;
    /* min-height: calc(100vh - 84px); */
    margin-top: 12px;
}
.personnel-list {
  position: absolute;
  left: 0;
  right: 0;
  margin-bottom: 12px;
  border-radius: 12px;
  background: linear-gradient(86deg, #e2e9ff 6.94%, #eef2ff 99.88%);
}
.personnel-header{
 padding-top: 14px;
 padding-bottom: 14px;
}
.personnel-surname{
 width: 40px;
 height: 40px;
 margin-right: 8px;
 color: #fff;
 border-radius: 999px;
 /* background: #EEC068; */
}
.header-score{
    padding: 12px;
    margin-left: 8px;
    border-radius: 8px;
    background: #FFF;
}
.header-score span{
    color: #616C85;
    font-family: "Alibaba PuHuiTi";
    font-size: 14px;
    line-height: 20px; 
}
.header-score span:nth-child(2){
    color: rgba(25, 27, 30, 1) !important;
}
.header-score span:nth-child(2)::before{
    content:'';
    display: inline-block;
    margin: 0 8px;
    width: 1px;
    height: 12px;
    background: #EBEBEB;
}

.personnel-table{
    padding: 0px 20px 24px 20px;
    border-radius: 12px;
}
.table-heade{
    padding-top: 24px;
}
.table-title{
    margin-bottom: 16px;
}
.table-title .module-title::before{
    content: '';
    display: inline-block;
    margin-right: 4px;
    width: 2px;
    height: 12px;
    background: rgba(22, 93, 255, 1);
}
.subtotal{
    font-size: 12px;
    margin-top: 16px;
    padding-right: 12px;
    justify-content: flex-end;
}
.operate-box{
    background: #F8F8F9;
    border-radius: 12px;
    height: 20px;
    margin-bottom: 12px;
    padding: 10px 12px;
}
.operate-up,.operate-del {
    color: #5C636C;
    cursor: pointer;
}
.operate-del{
    margin-right: 16px;
}
.operate-del::before{
    content: "";
    display: inline-block;
    width: 1px;
    height: 12px;
    margin: 0 12px;
    background: #D7DADE;
}

.load-uploader {
    width: 100%;
    height: 182px;
    transition:all .7s ease;
}
.load-uploader >>>.el-upload {
    display: block;
    transition:all .7s ease;
}
.load-uploader >>>.el-upload-dragger {
    transition:all .7s ease;
    width: 100%;
    height: 182px;
}
.load-up_deform{
    flex-direction: initial !important;
    height: 82px !important;
}
.load-up_deform >>> .el-upload {
    height: 82px !important;
}
.load-up_deform  >>>.el-upload-dragger {
    height: 82px !important;
}
.load-up_deform .pot_text{
    margin-top: 0 !important;
}
.pot_content {
    width: 100%;
    height: 182px;
    background-color: rgba(165, 177, 209, 0.08);
    border-radius: 12px;
    flex-direction: column;
    justify-content: center;
    transition:all .7s ease;
}
.pot_text {
    font-size: 13px;
    color: #25282c;
    line-height: 18px;
    margin-top: 12px;
}
.pot_tips {
    font-size: 13px;
    color: #828b99;
    margin-top: 4px;
    line-height: 18px;
}
.picture_list {
    margin-top: 10px;
    flex-wrap: wrap;
    max-height: 230px;
    overflow: auto;
}
.picture_box {
    width: 117px;
    position: relative;
    margin-bottom: 12px;
    margin-right: 8px;
    flex-direction: column;
}
.picture_box:nth-child(3n){
    margin-right: 0px !important;
}
.picture_box .item_img{
    font-size: 0;
    position: relative;
    line-height: initial;
}
.delet_img {
    position: absolute;
    width: 100%;
    height: 100%;
    z-index: 2;
    top: 0;
    left: 0;
    border-radius: 8px;
    background-color: rgba(0, 0, 0, 0.2);
    display: none;
}
.delet_img span {
    font-size: 20px;
    color: #fff;
    cursor: pointer;
}
.picture_box:hover .delet_img {
    display: flex;
}
.picture_box .img-name{
    width: 117px;
    margin-top: 6px;
    font-size: 12px;
    color: #5C636C;
    overflow: hidden;
    line-height: initial;
    white-space: nowrap;
    text-overflow: ellipsis;
}
.picture_box img {
    border-radius: 8px;
    height: 80px;
    width: 100%;
}
>>>.dialogImg .el-dialog__body{
    padding: 0px 16px  20px 16px !important;
}
>>>.del-dialog .el-dialog__header{
    border-bottom:none !important;
}
>>>.el-image{
    height: 100%;
    width: 100%;
}

.picture_boxs {
    position: fixed;
    width: 100%;
    height: 100%;
    z-index: 999999;
    top: 0;
    left: 0;
}
.close_picture {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    background: rgba(0, 0, 0, 0.3);
    z-index: 1;
}
.picture_scale {
    position: absolute;
    top: 0px;
    right: 0px;
    bottom: 0px;
    left: 0px;
    max-height: 100%;
    max-width: 1200px;
    margin: auto;
    z-index: 2;
}
.operate_status{
    padding-left: 12px;
}
.operate_status::before {
  content: "•"; /* 这里是原点的Unicode字符 */  
  position: absolute;  
  left: 0;
  top: 50%; 
  transform: translateY(-50%); 
  /* 你可以添加更多样式来调整原点的大小、颜色等 */  
  font-size: 24px; /* 调整原点大小 */  
  color: inherit; /* 调整原点颜色 */  
}
</style>
<style>
.el-popover {
    padding: 0;
}
</style>